Garbage Collection v Jave: Všetko, čo potrebujete vedieť



Tento článok o zhromažďovaní odpadu v Jave vám dáva jasnú predstavu o tom, ako to funguje, o jeho typoch a rôznych metódach pri zhromažďovaní odpadu v Jave.

je univerzálny programovací jazyk a ak v prípade, že prídete do situácie, keď sú vo vašom programe nevyužité údaje a neviete, ako s nimi zaobchádzať, príde na rad Garbage Collection v Jave. Preto píšem tento článok, aby sme vám pomohli zvládnuť tieto funkcie.

Témám sa budem venovať v nasledujúcom poradí:





Začnime!

Čo je zbierka odpadu v Jave?

V prostredí Java čelia programátori problému zničenia predmety ktoré sa nepoužívajú. Ale s Garbage Collector sa o to dá ľahko postarať. Hlavným cieľom tohto programu Garbage Collector je uvoľniť haldu pamäte zničením objektov, ktoré neobsahujú odkaz. Táto technika je známa ako Zber odpadu.



Považuje sa tiež za program, ktorý pomáha vykonávať automatickú správu pamäte. Kedy sú spustené na JVM, objekty sú vytvárané na halde, čo je vlastne časť pamäte, ktorá je venovaná programu. Niektoré objekty už nakoniec nebudú potrebné. The smetiar nájde tieto nepoužité objekty a vymaže ich, aby uvoľnil pamäť.

  • Programy, ktoré nedealokujú pamäť, sa môžu nakoniec prerušiť, keď v systéme nezostane žiadna pamäť, ktorú by bolo možné alokovať. Všetky tieto programy údajne majú únik pamäte.
  • Zber odpadu v prostredí Java sa deje automaticky počas životnosti programu, čo eliminuje potrebu de-alokovať pamäť, a preto zabraňuje úniku pamäte.
  • Metódy ako zadarmo() v C a odstrániť () v jazyku C ++, ale v prostredí Java sa vykonáva automaticky. Takže poskytuje lepšiu správu pamäte.

Poďme si teda uvedomiť, ako tento automatický zber odpadu funguje v Jave.

Poznámka : Hovorí sa, že objekt je vhodný na zber odpadu, ak je nedosiahnuteľný.



Ako funguje Garbage Collection?

Garbage Collection je proces práce s pamäťou haldy a tiež známka alebo identifikujte nedosiahnuteľné objekty a zničte ich zhutnením.

ako vytvoriť pole objektov

Zber odpadu v Jave je automatický proces a programátor nemusí výslovne označovať objekty, ktoré sa majú vymazať. Implementácia žije hlavne v . Každý JVM môže implementovať odvoz odpadu. Jedinou požiadavkou je, aby spĺňal špecifikáciu JVM.

Aj keď je k dispozícii veľa JVM, Oracle’s HotSpot je zďaleka najbežnejšia, pretože ponúka robustnú a vyspelú sadu možností zberu odpadu.

  • HotSpot má niekoľko zberačov odpadu, ktorí sú optimalizovaní pre rôzne prípady použitia, a všetci zberači odpadu sledujú rovnaký základný proces.
  • Hneď v prvom kroku nereferenčné objekty sú označené a označené ako pripravené na odvoz odpadu.
  • V druhom kroku sa označené objekty odstránia. Pamäť je možné voliteľne skompaktovať potom, čo program na odstraňovanie odpadu odstráni objekty, takže zvyšné objekty sú na začiatku haldy v súvislom bloku. Proces zhutňovania uľahčuje postupné prideľovanie pamäte novým objektom po bloku pamäte pridelenom existujúcim objektom.

Všetci smetiari z HotSpotu implementujú generačnú stratégiu zberu, ktorá kategorizuje objekty podľa veku. Dôvodom generačného zberu odpadu je, že väčšina objektov má krátku životnosť a na zber odpadu bude pripravená čoskoro po jeho vytvorení.

Teraz sa pozrime, aké sú rôzne typy zberačov odpadu.

Druhy zberača odpadu

Spoločný podnik JVM poskytuje štyroch rôznych smetiarov, pričom všetci sú generační. Každá z nich má svoje výhody a obmedzenia. Výber, ktorý zberač odpadu použije, leží na používateľovi a môžu existovať početné rozdiely v priepustnosti a pozastaveniach aplikácií.

Existujú konkrétne 4 typy smetiarov.

  • Sériový zberač odpadu (GC) :Všetky udalosti zhromažďovania odpadu sa vedú sériovo v jednom vlákne. Zhutnenie sa vykoná po každom zbere odpadu.
  • Paralelná / priepustná GC: Na zber malého alebo malého odpadu sa používa viac vlákien. Jedno vlákno sa používa na zber veľkého množstva odpadu a na zhutňovanie starej generácie. Variant Parallel tiež používa viac vlákien na zber veľkého odpadu a na zhutňovanie starej generácie.
  • Zberateľ CMS :Na zber malého alebo malého odpadu sa používa viac vlákien s rovnakým algoritmom ako Parallel. Väčšina zberu odpadu je viacvláknová, ale CMS beží súčasne s procesmi aplikácie, aby sa minimalizovali udalosti aplikácie. Nevykonáva sa žiadne zhutnenie.
  • Zberateľ G1 :Tento zberač odpadu je v podstate určený ako náhrada za CMS. Je paralelný a súbežný ako CMS, ale v porovnaní so staršími smetiarmi funguje celkom inak.

Poďme pochopiť výhody zberu odpadu v Jave.

čo je zalomenie riadku v html

Výhody

  • Najväčšou výhodou zberu odpadu v jazyku Java je to, že je automaticky spracováva vymazanie nepoužitých objektov alebo niektorých objektov, ktoré sú neprístupné, aby uvoľnili pamäťové prostriedky.
  • Garbage Collection je teraz novou štandardnou súčasťou mnohých populárnych programovacích jazykov.
  • Zvyšuje efektivitu pamäte Java. Je to tak preto, lebo zberač odpadu odstraňuje nereferované objekty z pamäte haldy.
  • to je automaticky hotové zberačom odpadu, ktorý je súčasťou JVM.

Osvedčené postupy

Najlepším prístupom k prispôsobeniu sa zbieraniu odpadu v Jave je nastavenie vlajok na JVM. Vlajky majú schopnosť upraviť zberač odpadu, ktorý sa má použiť. Pomáha to robiť to, čo sa najlepšie hodí na spracovanie backendu, kde sú prijateľné dlhé pauzy na zber odpadu.

Tu si treba uvedomiť ešte jednu vec, že ​​zberač odpadkov CMS je navrhnutý tak, aby minimalizoval prestávky, čo ho robí ideálnym pre aplikácie GUI, kde je veľmi dôležitá odozva. Dodatočné doladenie je možné dosiahnuť zmenou veľkosti haldy alebo jej častí a meraním účinnosti zberu odpadu.

Pozrime sa na tento program.

trieda Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Hodnota a =' + a) System.out.println ('Hodnota b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

V tomto prípade dvaobjekty a vytvoria sa dve referenčné premenné. Ak pridáte ďalší príkaz e3 = Null,dve referenčné premenné budú ukazovať na ten istý objekt. A ak neexistuje žiadny odkaz na premennú, e3 = e2e3.showData () V tomto okamihu neexistujú žiadne odkazy smerujúce na objekt a stane sa oprávneným na zhromažďovanie odpadkov.

Týmto sa dostávame na koniec tohto článku ‘Garbage Collection in Java’. Naučili sme sa, ako odstrániť nepoužívané objekty z haldy a rôzne typy zberu.

Ak ste našli tento článok o „Garbage Collection v Jave“, pozrite si autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Sme tu, aby sme vám pomohli na každom kroku na vašej ceste. Vymyslíme učebné osnovy určené pre študentov a profesionálov, ktorí sa chcú stať vývojármi Java.

Máte na nás otázku? Uveďte to, prosím, v sekcii komentárov v tejto časti „Garbage Collection in Java a ozveme sa vám čo najskôr.