Colectarea gunoiului - și eliberarea resurselor în java, un blog despre criptare

Deoarece obiectele sunt create dinamic utilizând noua operație. dar sunt distruse automat, este de dorit să cunoașteți mecanismul de eliminare a obiectelor și cum să eliberați memoria. Eliberarea automată a memoriei ocupate de obiect este efectuată utilizând mecanismul de colectare a gunoiului. Atunci când nu există referințe la obiect, adică toate referințele la acesta au ieșit din domeniul de aplicare al programului, se presupune că obiectul nu mai este necesar și memoria ocupată de obiect poate fi eliberată. "Colectarea gunoiului" apare neregulat în timpul executării programului. Este imposibil să forțați "colectarea de gunoi", puteți doar să o "recomandați" apelând metoda System.gc () sau Runtime.getRuntime () Gc (). dar mașina virtuală va șterge memoria când o consideră convenabilă. Apelarea metodei System.runFinalization () va începe metoda finalize () pentru obiectele care au pierdut toate referințele.







Uneori, un obiect trebuie să efectueze anumite acțiuni înainte de eliberarea memoriei. De exemplu, resurse externe gratuite. Pentru a face față unor astfel de situații, pot fi utilizate două metode: o construcție încearcă în cele din urmă și un mecanism de finalizare. Construcția încercării în cele din urmă este de preferat, absolut fiabilă și va fi discutată în capitolul nouă. Pornind finalizarea mecanismului este determinată de algoritmul de colectare a gunoiului și executarea sa imediată poate dura un timp arbitrar lung. Din acest motiv, comportamentul metodei






finalizează () poate afecta funcționarea corectă a programului, mai ales când schimbă JVM. Dacă este posibilă eliberarea de resurse sau efectuarea altor acțiuni similare fără a implica acest mecanism, este mai bine să o faceți fără ea. O mașină virtuală numește această metodă ori de câte ori este pe cale să distrugă un obiect din acea clasă. În interiorul metodei finalize (). stocarea locală imediat înainte de lansare, determină acțiunile care trebuie efectuate înainte de distrugerea obiectului.

Metoda finalize () are următoarea semnătură:

protejat void finalize ()

Cuvântul protejat refuză accesul la codul finalize () definit în afara acestei clase. finalizeze () metoda este invocată chiar înainte de „colectare a gunoiului“ și nu atunci când obiectul iese din domeniul de aplicare, care este imposibil să se determine în prealabil atunci când finalize () este executat, și obiect inaccesibil pot ocupa memoria pentru o lungă perioadă de timp. În principiu, această metodă poate să nu fie îndeplinită deloc! Este inadmisibil în cererea de a avea încredere în această metodă cu acțiuni critice în timp pentru a elibera resurse.

managerul public (valoarea int)

() aruncă lovitura





Trimiteți-le prietenilor: