Što je prikupljanje smeća na Javi?

Sadržaj:

Anonim

Što je prikupljanje smeća na Javi?

Skupljanje smeća u Javi postupak je kojim programi automatski izvršavaju upravljanje memorijom. Sakupljač smeća (GC) pronalazi nekorištene predmete i briše ih da bi vratio memoriju. U Javi se dinamičko dodjeljivanje memorije objekata postiže korištenjem novog operatora koji koristi nešto memorije, a memorija ostaje dodijeljena dok ne postoje reference za upotrebu objekta.

Kad nema referenci na objekt, pretpostavlja se da više nije potreban, a memorija koju zauzima objekt može se povratiti. Nema izričite potrebe za uništavanjem objekta jer Java automatski rješava raspodjelu.

Tehnika koja to postiže poznata je kao Skupljanje smeća . Programi koji ne raspodjeljuju memoriju mogu se na kraju srušiti kada u sustavu više nema memorije za dodjelu. Kaže se da ti programi imaju curenje memorije.

Prikupljanje smeća u Javi događa se automatski tijekom trajanja programa, uklanjajući potrebu za raspodjelom memorije i time izbjegavajući curenje memorije.

U jeziku C, programer je odgovoran za dinamičku raspodjelu memorije dodijeljene dinamički pomoću funkcije free (). Ovdje vodi Java upravljanje memorijom.

Napomena: Svi se objekti kreiraju u odjeljku hrpe memorije. O tome više u kasnijem vodiču.

Primjer: Naučiti mehanizam sakupljača smeća u Javi

Korak 1) Kopirajte sljedeći kod u editor.

razred Student {int a;int b;javna praznina setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("Vrijednost a =" + a);System.out.println ("Vrijednost b =" + b);}javna statička void glavna (String args []) {Student s1 = novi student ();Student s2 = novi 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 ();}}

Korak 2) Spremite, prevedite i pokrenite kôd. Kao što je prikazano na dijagramu, kreiraju se dva objekta i dvije referentne varijable.

Korak 3) Komentirajte redak # 20,21,22. Spremite, prevedite i pokrenite kôd.
Korak 4) Kao što je prikazano na donjem dijagramu, dvije referentne varijable usmjeravaju na isti objekt.

Korak 5) Raskomentirajte retke # 23 i 24. Sastavite, spremite i pokrenite kôd
Korak 6) Kao što je prikazano na donjem dijagramu, s2 postaje nula, ali s3 i dalje pokazuje na objekt i ne ispunjava uvjete za prikupljanje java smeća.

Korak 7) Raskomentirajte redak # 25 i 26. Spremite, prevedite i pokrenite kôd
Korak 8) U ovom trenutku nema referenci koje upućuju na objekt i postaje prihvatljivo za odvoz smeća. Bit će uklonjen iz memorije i ne postoji način da ga vratite natrag.

Kako izbrisati objekt u Javi?

1) Ako svoj objekt želite učiniti prihvatljivim za Skupljanje smeća, dodijelite njegovu referentnu varijablu nuli.
2) Primitivni tipovi nisu objekti. Ne može im se dodijeliti ništa.