Mi a szemétgyűjtés a Java-ban?

Tartalomjegyzék:

Anonim

Mi a szemétgyűjtés a Java-ban?

A Java szemétgyűjtés egy olyan folyamat, amelynek során a programok automatikusan végrehajtják a memóriakezelést. A Garbage Collector (GC) megtalálja a fel nem használt objektumokat, és törli őket, hogy visszanyerje a memóriát. A Java-ban az objektumok dinamikus memória-allokációját az új operátor használatával érik el, amely használ némi memóriát, és a memória addig marad allokálva, amíg hivatkozások nem találhatók az objektum használatára.

Ha nincs utalás egy objektumra, akkor feltételezzük, hogy erre már nincs szükség, és az objektum által elfoglalt memória visszanyerhető. Nincs szükség egy objektum megsemmisítésére, mivel a Java automatikusan kezeli a kiosztást.

Az ezt megvalósító technika Garbage Collection néven ismert . Azok a programok, amelyek nem szüntetik meg a memória lefoglalását, végül összeomolhatnak, ha a rendszerben nem marad memória a lefoglaláshoz. Ezek a programok állítólag memóriaszivárognak.

A Java-ban a szemétgyűjtés a program élettartama alatt automatikusan megtörténik , így nincs szükség a memória kiosztására és ezáltal elkerülhető a memória szivárgása.

C nyelven a programozó feladata, hogy a free () függvény segítségével dinamikusan lefoglalt memóriát allokálja. Ide vezet a Java memóriakezelés.

Megjegyzés: Az összes objektum a memória kupac szakaszában jön létre . Bővebben erről egy későbbi oktatóanyagban.

Példa: A szemétgyűjtő mechanizmus megtanulása a Java-ban

1. lépés: Másolja a következő kódot egy szerkesztőbe.

osztályos diákint a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("a =" + a értéke);System.out.println ("b értéke =" + b);}public static void main (String args []) {Diák s1 = új hallgató ();Student s2 = new Student ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Student s3;s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}

2. lépés: Mentse, fordítsa le és futtassa a kódot. Ahogy a diagram mutatja, két objektum és két referencia változó jön létre.

3. lépés: A 20,21,22 számú sor kommentálása. Mentse, fordítsa le és futtassa a kódot.
4. lépés) Amint azt az alábbi ábra mutatja, két referencia változó ugyanarra az objektumra mutat.

5. lépés) Megjegyzés törlése sort # 23 & 24. Compile, Save & Run kódot
6. lépés) Amint az a lenti diagramon, s2 lesz null, de az S3 még rámutatva, hogy a tárgy és nem jogosult a java szemétgyűjtő.

7. lépés : A 25. és 26. sor megjegyzés nélküli kommentálása. A kód mentése, fordítása és futtatása
8. lépés: Ezen a ponton nincsenek utalások az objektumra, és jogosultak lesznek a szemétszállításra. Ez eltávolításra kerül a memóriából, és semmilyen módon nem lehet visszakeresni.

Hogyan lehet törölni egy objektumot a Java-ban?

1) Ha az objektumát jogosulttá kívánja tenni a Szemétgyűjtésre, rendelje hozzá nullához a referencia változóját.
2) A primitív típusok nem tárgyak. Nem rendelhető hozzájuk null.