Mis on Java prügikoristus?
Java-s olev prügikoristus on protsess, mille käigus programmid teostavad mäluhaldust automaatselt. Prügikoguja (GC) leiab kasutamata objektid ja kustutab need mälu taastamiseks. Java-s saavutatakse objektide dünaamiline mälujaotus uue operaatori abil, mis kasutab mõnda mälu, ja mälu jääb eraldatuks seni, kuni objekti kasutamiseni on viited.
Kui objektile pole viiteid, eeldatakse, et seda pole enam vaja ja objekti hõivatud mälu saab taastada. Objekti hävitamine pole selgesõnaline, kuna Java tegeleb eraldamise tühjendamisega automaatselt.
Selle saavutamise tehnika on tuntud kui prügikogumine . Programmid, mis ei eralda mälu, võivad lõpuks kokku kukkuda, kui süsteemis pole eraldamiseks enam mälu. Nendel programmidel on mälulekkeid.
Java-s prügivedu toimub programmi eluea jooksul automaatselt , välistades vajaduse mälu eraldada ja vältides seeläbi mälulekkeid.
C-keeles on programmeerija vastutus vaba () funktsiooni abil dünaamiliselt eraldatud mälu eraldamine. Siia viib Java mäluhaldus.Märkus. Kõik objektid luuakse mälu jaotises Heap . Lisateavet selle kohta leiate hilisemast juhendajast.
Näide: õppida Java-s prügikoguja mehhanismi
Samm 1) Kopeerige järgmine kood redaktorisse.
klassi õpilane {int a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("a väärtus =" + a);System.out.println ("b = väärtus +" + b);}public staatiline void main (String args []) {Õpilane s1 = uus õpilane ();Õpilane s2 = uus õpilane ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Õpilane s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}
Samm 2) Salvestage, kompileerige ja käivitage kood. Nagu diagrammil näidatud, luuakse kaks objekti ja kaks võrdlusmuutujat.
Samm 3) Kommenteerimata rida # 20,21,22. Koodi salvestamine, kompileerimine ja käitamine.
Samm 4) Nagu näidatud alloleval diagrammil, osutavad kaks võrdlusmuutujat samale objektile.
Samm 5) Kommenteerige rida nr 23 ja 24. Kood kompileerige, salvestage ja käivitage
samm 6) Nagu allpool toodud skeemil näidatud, muutub s2 nulliks, kuid s3 osutab endiselt objektile ja ei sobi java prügiveoks.
Samm 7) Kommenteerimata rida # 25 ja 26. Koodi salvestamine, kompileerimine ja käitamine
Samm 8) Siinkohal pole objektile viitavaid viiteid ja see sobib prügiveoks. See eemaldatakse mälust ja seda pole võimalik kuidagi tagasi saada.
Kuidas Java-objekti kustutada?
1) Kui soovite, et teie objekt oleks prügikogumise jaoks sobilik, määrake selle võrdlusmuutujaks null.
2) Algelised tüübid ei ole objektid. Neile ei saa nulli määrata.