Koleksyon ng Basura sa Java: Lahat ng kailangan mong malaman



Ang artikulong ito sa koleksyon ng Basura sa Java ay nagbibigay sa iyo ng isang malinaw na ideya tungkol sa kung paano ito gumagana, mga uri ito, at iba't ibang mga pamamaraan sa ilalim ng pagkolekta ng basura sa Java

ay isang pangkalahatang-layunin na programa ng wika at kung sakaling magkaroon ka ng isang sitwasyon kung saan mayroong mga hindi nagamit na data sa iyong programa at hindi mo alam kung paano ito hawakan, madaling magamit ang Koleksyon ng Basura sa Java. Kaya, sinusulat ko ang artikulong ito upang matulungan ka sa paghawak ng mga pagpapaandar na ito.

Sasaklawin ko ang mga paksa sa sumusunod na pagkakasunud-sunod:





Magsimula na tayo!

Ano ang Koleksyon ng Basura sa Java?

Sa Java, nahaharap ang mga programmer sa isyu ng pagkakaroon upang sirain ang mga bagay wala nang gamit yan. Ngunit sa Garbage Collector, madali itong mapangalagaan. Ang pangunahing layunin ng Garbage Collector na ito ay ang libreng memorya ng magbunton sa pamamagitan ng pagsira sa mga bagay na walang nilalaman na sanggunian. Ang pamamaraan ay kilala bilang Koleksyon ng Basura.



Ito ay isinasaalang-alang din bilang isang programa na makakatulong upang maisagawa ang awtomatikong pamamahala ng memorya. Kailan ay tumatakbo sa JVM, ang mga bagay ay nilikha sa tambak, na kung saan ay isang bahagi ng memorya na nakatuon sa programa. Sa paglaon, ang ilang mga bagay ay hindi na kakailanganin. Ang basurero nahahanap ang mga hindi nagamit na bagay at tinatanggal ang mga ito upang mapalaya ang ilang memorya.

  • Ang mga program na hindi nag-aalis ng memorya ay maaaring huli masira kapag walang natitirang memorya sa system na ilalaan. Ang lahat ng mga programang ito ay sinasabing may mga paglabas ng memorya.
  • Ang pagkolekta ng basura sa Java ay awtomatikong nangyayari habang buhay ng isang programa, inaalis ang pangangailangan na ma-de-allocate ang memorya at samakatuwid ay maiiwasan ang paglabas ng memorya.
  • Paraan tulad ng libre() sa C at tanggalin () sa C ++ ginagamit ngunit, sa Java, awtomatiko itong ginaganap. Kaya, nagbibigay ng mas mahusay na pamamahala ng memorya.

Ngayon, unawain natin kung paano gumagana ang awtomatikong pagkolekta ng basura sa Java.

Tandaan : Ang isang bagay ay sinasabing karapat-dapat para sa pagkolekta ng basura kung hindi ito maaabot.



Paano gumagana ang Koleksyon ng Basura?

Ang Koleksyon ng Basura ay isang proseso ng pagtatrabaho sa memorya ng Heap at gayundin marka o kilalanin ang mga hindi maabot na mga bagay at sirain ang mga ito sa pamamagitan ng siksik.

Ang koleksyon ng basura sa Java ay isang awtomatikong proseso at ang programmer ay hindi kailangang malinaw na markahan ang mga bagay na tatanggalin. Pangunahin nakatira ang pagpapatupad sa . Ang bawat JVM ay maaaring magpatupad ng pagkolekta ng basura. Ang kinakailangan lamang ay dapat nitong matugunan ang pagtutukoy ng JVM.

Kahit na maraming mga magagamit na JVM, Oracle's HotSpot ay ang pinaka-karaniwan dahil nag-aalok ito ng isang matatag at mature na hanay ng mga pagpipilian sa pagkolekta ng basura.

  • Ang HotSpot ay may maraming mga kolektor ng basura na na-optimize para sa iba't ibang mga kaso ng paggamit, at lahat ng mga nagtitipon ng basura ay sumusunod sa parehong pangunahing proseso.
  • Sa pinakaunang hakbang, mga bagay na walang sanggunian ay kinilala at minarkahan bilang handa na para sa pagkolekta ng basura.
  • Sa pangalawang hakbang, ang mga minarkahang bagay ay tinanggal. Opsyonal, ang memorya ay maaaring mapagsiksik matapos matanggal ng basurero ang mga bagay, kaya't ang mga natitirang bagay ay nasa isang magkadikit na bloke sa simula ng bunton. Ginagawang mas madali ng proseso ng pag-compaction upang maglaan ng memorya sa mga bagong bagay nang sunud-sunod pagkatapos ng bloke ng memorya na inilalaan sa mga umiiral na mga bagay.

Ang lahat ng mga nangongolekta ng basura ng HotSpot ay nagpapatupad ng isang diskarte sa pang-generational na koleksyon na ikinategorya ang mga bagay ayon sa edad. Ang pangangatuwiran sa likod ng pang-henerasyon na koleksyon ng basura ay ang karamihan sa mga bagay ay maikli ang buhay at magiging handa para sa pagkolekta ng basura kaagad pagkatapos malikha.

Tingnan natin ngayon kung ano ang iba't ibang mga uri ng mga basurero.

switch case sa mga halimbawa ng programa ng java

Mga uri ng Basurero

Nagbibigay ang JVM ng apat na magkakaibang mga basurero, lahat ng mga ito henerasyonal. Ang bawat isa ay may sariling mga pakinabang at limitasyon. Ang pagpili kung aling mga basurero na gagamitin ang nakasalalay sa gumagamit at maaaring maraming pagkakaiba sa pag-throughput at pag-pause ng aplikasyon.

Mayroong 4 na uri ng mga nangangalap ng basura.

  • Serial Garbage Collector (GC) :Ang lahat ng mga kaganapan sa pagkolekta ng basura ay isinasagawa nang seryal sa isang solong thread. Isinasagawa ang siksik pagkatapos ng bawat koleksyon ng basura.
  • Parallel / throughput GC: Ginagamit ang maramihang mga thread para sa menor de edad / maliit na koleksyon ng basura. Ang isang solong thread ay ginagamit para sa pangunahing pangangolekta ng basura at pag-compaction ng Old Generation. Gayundin, ang Parallel variant ay gumagamit ng maraming mga thread para sa pangunahing koleksyon ng basura at Old Compactation compaction.
  • CMS Collector :Ginagamit ang maramihang mga thread para sa maliit / menor de edad na koleksyon ng basura gamit ang parehong algorithm tulad ng Parallel. Karamihan sa koleksyon ng basura ay maraming sinulid, ngunit ang CMS ay tumatakbo kasabay ng mga proseso ng aplikasyon upang mabawasan ang mga kaganapan sa aplikasyon. Walang pagsisiksik na ginaganap.
  • G1 Kolektor :Ang kolektor ng basura na ito ay karaniwang inilaan bilang isang kapalit ng CMS. Ito ay magkapareho at magkakasabay tulad ng CMS, ngunit ito ay gumagana nang ibang-iba kapag inihambing ito sa mga mas matatandang basurero.

Unawain natin ang mga pakinabang ng koleksyon ng Basura sa Java.

Mga kalamangan

  • Ang pinakamalaking pakinabang ng koleksyon ng basura ng Java ay awtomatiko ito humahawak sa pagtanggal ng mga hindi nagamit na bagay o ilang mga bagay na hindi maa-access upang mapalaya ang mga mapagkukunan ng memorya.
  • Ang Basura Koleksyon ay ngayon isang bagong pamantayan ng sangkap ng maraming tanyag na mga wika ng programa.
  • Ginagawa nitong mahusay ang memorya ng Java. Ito ay dahil tinanggal ng basurero ang mga hindi nag-refer na bagay mula sa memorya ng magbunton.
  • Ito ay awtomatikong tapos na ng basurero na bahagi ng JVM.

Pinakamahusay na kasanayan

Ang pinakamahusay na diskarte upang umangkop sa koleksyon ng basura ng Java ay sa pamamagitan ng pagtatakda ng mga watawat sa JVM. Ang mga watawat ay may kakayahang ayusin ang basurang gagamitin. Nakatutulong ito upang gawin itong pinakamahusay na angkop para sa pagproseso ng backend kung saan katanggap-tanggap ang mahabang paghinto para sa pagkolekta ng basura.

Ang isa pang bagay na dapat tandaan dito ay, ang CMS basura kolektor ay dinisenyo upang i-minimize ang mga pag-pause na ginagawang perpekto para sa mga aplikasyon ng GUI kung saan ang pagtugon ay lubos na mahalaga. Ang karagdagang karagdagang pagsasaayos ay maaaring magawa sa pamamagitan ng pagbabago ng laki ng bunton o mga seksyon nito at pagsukat sa kahusayan sa pagkolekta ng basura.

Tingnan natin ang program na ito.

klase Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Halaga ng b =' + b)} pampublikong static void main (String args []) {Edureka e1 = bagong Edureka () Edureka e2 = bagong 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 ()}}

Sa kasong ito, ang dalawaang mga bagay at dalawang variable ng sanggunian ay nilikha. Kung nagdagdag ka ng isa pang utos e3 = Null,ang dalawang variable na sanggunian ay magtuturo sa parehong bagay. At kung walang sanggunian sa variable, e3 = e2e3.showData () Sa puntong ito, walang mga sanggunian na tumuturo sa bagay at magiging karapat-dapat ito sa pagkolekta ng basura.

Dinadala tayo nito sa pagtatapos ng artikulong 'Basura sa Java' na artikulong ito. Nalaman namin kung paano alisin ang mga hindi nagamit na bagay sa tambak at ang iba't ibang uri ng koleksyon.

Kung nakita mo ang artikulong ito sa 'Koleksyon ng Basura sa Java', tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Narito kami upang matulungan ka sa bawat hakbang sa iyong paglalakbay, nakakakuha kami ng isang kurikulum na idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga puna ng 'Koleksyon ng Basura sa Java ' at babalik kami sa iyo sa lalong madaling panahon.