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 ()
- A finalize () metódust a java.lang.Object osztály meghatározása szerint védik.
- A finalize () metódust csak egyszer hívják meg.
- a finalize () módszer felülbírálásához kifejezetten meg kell hívni a finalize metódust.
- 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.
- 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
- A pusztító megsemmisíti a kivitelező által létrehozott értéket a térben a halommemóriában.
- A rombolót mindig a program végén hívják.
- A pusztítót soha nem terhelik túlzottan a pusztító nem érvel.
- 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-
- Mi a Java interfész?
- Mi a Java interfész?
- Java eszközök
- Elrendezés Java-ban
- Konstruktor és romboló Java-ban
- Példák a pusztítóra a Pythonban
- JRE vs JVM | A 8 legfontosabb különbség az (infographics) között
- Destructor PHP-ben példákkal