Bevezetés a Java detructorba

A Java rombolóit meg lehet tanulni a Java véglegesítési módszerével. A koncepció megegyezik a véglegesítési módszerrel. A Java mindenki számára használható, a pusztító kivételével, a Szemétgyűjtés segítségével. Ezért abban az esetben, ha szükség van a pusztító hívására, ez megtörténhet a véglegesítési módszer segítségével. Ez a módszer nem független, mivel a szemétgyűjtésre támaszkodik. A szemétgyűjtő egy szál, amely törli vagy megsemmisíti a fel nem használt tárgyat a halomterületen. Mondja el, ha az objektum fájlhoz van csatlakoztatva, vagy mondjon valamilyen adatbázis-alkalmazást vagy hálózati kapcsolatot, mielőtt törli vagy megsemmisíti az objektumot, a hulladékgyűjtés előtt be kell zárnia az összes erőforrással kapcsolatos kapcsolatot. A funkciók bezárását a véglegesítési módszer meghívásával hajtják végre.

A Destructor meghatározása Java-ban

A pusztító olyan módszer, amelyet akkor hívnak meg, amikor egy objektum megsemmisül. „A pusztító fő célja a kiosztott memória felszabadítása és az erőforrások megtisztítása, például a nyitott fájlok bezárása, az adatbázis-kapcsolatok bezárása, a hálózati erőforrások bezárása stb.,

Szintaxis

Class Object
(
protected void finalize()
(
//statements like closure of database connection
)
)

Hogyan működik a Destructor Java-ban?

A pusztítónak van egy finalize () módszere java-ban, amely hasonló a C ++ pusztítóhoz. Az objektumok létrehozásakor azokat a halommemóriában tárolják. Ezekhez fő- vagy gyermekmenettel lehet hozzáférni. Tehát amikor ezeket a tárgyakat nem használja tovább a főszál vagy annak gyermekszálai, azok hulladékgyűjtésre alkalmasak lesznek, és a megszerzett memória az új objektumok létrehozásakor elérhetővé válik. Mielőtt egy objektum a szemetesgyűjtő által összegyűjtött szemetet jeleníti meg, a JRE (Java Runtime Environment) meghívja a finalize () módszert a bemeneti-kimeneti folyamok, az adatbázis-kapcsolatok, a hálózati kapcsolatok stb. Bezárására. Vegye figyelembe, hogy a meghívott véglegesítési módszer védett. Miért védik a véglegesítést, mert az alaposztály meghívhatja, vagy származtatott osztály hívhatja? a véglegesítési módszer jelen van az Object osztályban. Így abban az esetben, ha meg akarja hívni ezt a véglegesítési módszert más objektumokból, megváltoztathatja ezt a védettt nyilvánosra.

Szintaxis:

protected void finalize throws Throwable()
(
//Keep some resource closing operations here
)

A véglegesítés módszerei ()

  1. A finalize () metódust a java.lang.Object osztály meghatározása szerint védik.
  2. A finalize () metódust csak egyszer hívják meg.
  3. a finalize () módszer felülbírálásához kifejezetten meg kell hívni a finalize metódust.
  4. A GC () a JVM szolgáltatása a szemétgyűjtés végrehajtására, akkor hívják, amikor a halommemória megtelt és új memória szükséges az új érkező objektumokhoz.
  5. A JVM figyelmen kívül hagy minden kivételt, kivéve a befejezetlen módszernél előforduló nem ellenőrzött kivételeket.

1. példa

Az alábbi programban a String osztálynak megfelelő véglegesítési módszert nevezzük a programban szereplő véglegesítési módszer helyett. A véglegesítési módszert itt felülbíráljuk.

Kód:

public class Demo
(
public static void main(String() args)
(
Integer i = new Integer(2);
i = null;
System.gc();
System.out.println("In the Main Method");
)
protected void finalize()
(
System.out.println("object is garbage collected ");
)
)

Kimenet:

2. példa

Az alábbi programban a véglegesítési módszert belsőleg hívják, kifejezett hívásra nincs szükség.

Kód

public class Demo
(
public static void main(String() args)
(
Demo dm = new Demo();
dm = null;
System.gc();
System.out.println("In the Main Method");
)
protected void finalize()
(
System.out.println("object is garbage collected ");
)
)

Kimenet:

3. példa

Az alábbi programban a véglegesítést a létrehozott objektumok számától függően belsőleg hívják.

Kód

public class NewProgram(
public void finalize()(
System.out.println("object is garbage collected");
)
public static void main(String args())(
NewProgram np1=new NewProgram(); //first instantiation of Class NewProgram
NewProgram np2=new NewProgram(); //second instantiation of Class NewProgram
np1=null;
np2=null;
System.gc();
System.out.println("In the Main Method");
)
)

Kimenet:

4. példa

Az alábbi programban két objektum jön létre, a véglegesítést egyszer hívják, mivel mindkét objektum ugyanazra mutat.

Kód:

public class NewProgram(
public void finalize()(
System.out.println("garbage collected");
)
public static void main(String args())(
NewProgram np1=new NewProgram(); //first instantiation of Class NewProgram
NewProgram np2=new NewProgram(); //second instantiation of Class NewProgram
np1 = np2; // both now pointing to same object
System.gc();
System.out.println("in the Main Method");
)
)

Kimenet:

5. példa

Az alábbi programban a véglegesítési módszert kétszer egyértelműen és belsőleg is meghívják.

Kód

public class Demo
(
public static void main(String() args)
(
Demo dm = new Demo();
dm.finalize();
dm = null;
System.gc();
System.out.println("In the Main Method");
)
protected void finalize()
(
System.out.println("garbage collected ");
)
)

Kimenet:

6. példa

Az alábbi programban van egy aritmetikai kivétel, amelyet a véglegesítési módszerben hívnak meg, mivel kifejezetten azt hívják, amely tovább okozza a kivételt és megállítja a fennmaradó program végrehajtását.

Kód:

public class Demo
(
public static void main(String() args)
(
Demo dm = new Demo();
dm.finalize();
dm = null;
System.gc();
System.out.println("In the Main Method");
)
protected void finalize()
(
System.out.println("garbage collected ");
System.out.println(10 / 0);
)
)

Kimenet:

7. példa

Az alábbi programban nincs kivételt képező kivétel, mivel nem nevezzük kifejezetten, és folytatja a fennmaradó program végrehajtását.

Kód:

public class Demo
(
public static void main(String() args)
(
Demo dm = new Demo();
dm = null;
System.gc();
System.out.println("In the Main Method");
)
protected void finalize()
(
System.out.println("garbage collected ");
System.out.println(10 / 0);
)
)

Kimenet:

A Destructor előnyei Java-ban

  1. A pusztító megsemmisíti a kivitelező által létrehozott értéket a térben a halommemóriában.
  2. A rombolót mindig a program végén hívják.
  3. A pusztítót soha nem terhelik túlzottan a pusztító nem érvel.
  4. Nem kell meghatároznunk a kivitelezőnket, a fordító létrehoz nekünk.

Következtetés

Remélem, hogy ez a cikk érdekes és informatív volt mind a téma megtanulásához. Ez a cikk szinte az összes témát lefedi, amelyet remél, és remélem megfelel minden igényének.

Ajánlott cikkek

Ez egy útmutató a Java detructorjához. Itt megvitattuk a romboló meghatározását Java-ban, Hogyan működik a romboló Java-ban a módszerekkel, előnyökkel és különféle példákkal. Megnézheti a másik javasolt cikket is, ahol további információt szerezhet-

  1. Mi a Java interfész?
  2. Mi a Java interfész?
  3. Java eszközök
  4. Elrendezés Java-ban
  5. Konstruktor és romboló Java-ban
  6. Példák a pusztítóra a Pythonban
  7. JRE vs JVM | A 8 legfontosabb különbség az (infographics) között
  8. Destructor PHP-ben példákkal

Kategória: