Atkritumu savākšana Java valodā: viss, kas jums jāzina



Šis raksts par Java atkritumu savākšanu sniedz skaidru priekšstatu par tā darbību, tipiem un dažādām metodēm zem Java atkritumu savākšanas

ir vispārējas nozīmes programmēšanas valoda, un, ja gadījumā, ja jūs nonākat situācijā, kad jūsu programmā ir neizmantoti dati un jūs nezināt, kā ar tiem rīkoties, noderēs Java atkritumu savākšana. Tāpēc es rakstu šo rakstu, lai palīdzētu jums rīkoties ar šīm funkcijām.

Es apskatīšu tēmas šādā secībā:





Sāksim!

Kas ir Java atkritumu savākšana?

Java programmētāji saskaras ar problēmu, ka viņiem ir jāiznīcina objektiem kas nav izmantojami. Bet ar atkritumu savācēju to var viegli sarūpēt. Šī atkritumu savācēja galvenais mērķis ir atbrīvot kaudzes atmiņu, iznīcinot objektus, kuros nav atsauces. Tehnika ir pazīstama kā Atkritumu kolekcija.



To uzskata arī par programmu, kas palīdz veikt automātisko atmiņas pārvaldību. Kad tiek palaistas JVM, objekti tiek izveidoti uz kaudzes, kas faktiski ir atmiņas daļa, kas ir veltīta programmai. Galu galā daži objekti vairs nebūs vajadzīgi. The atkritumu savācējs atrod šos neizmantotos objektus un izdzēš, lai atbrīvotu daļu atmiņas.

  • Programmas, kurās netiek atdalīta atmiņa, galu galā var izlauzties, kad sistēmā nav atlicis atvēlēt atmiņu. Tiek apgalvots, ka visām šīm programmām ir atmiņas noplūde.
  • Atkritumu savākšana Java notiek automātiski programmas darbības laikā, novēršot nepieciešamību atdalīt atmiņu un tādējādi novēršot atmiņas noplūdi.
  • Metodes, piemēram, bez maksas () C un dzēst () C ++ tiek izmantoti, bet Java valodā tas tiek veikts automātiski. Tātad, nodrošina labāku atmiņas pārvaldību.

Tagad sapratīsim, kā šī automātiskā atkritumu savākšana darbojas Java valodā.

Piezīme : Tiek teikts, ka objekts ir piemērots atkritumu savākšanai, ja tas nav sasniedzams.



Kā darbojas atkritumu savākšana?

Atkritumu savākšana ir process, kā arī strādāt ar kaudzes atmiņu atzīme vai identificējiet nepieejamos objektus un iznīciniet tos ar blīvēšanu.

Atkritumu savākšana Java ir automātisks process, un programmētājam nav skaidri jāatzīmē dzēšamie objekti. Īstenošana galvenokārt notiek . Katrs JVM var īstenot atkritumu savākšanu. Vienīgā prasība ir tāda, ka tai jāatbilst JVM specifikācijai.

Lai gan ir pieejami daudzi JVM, Oracle's Karstais punkts neapšaubāmi ir visizplatītākais, jo tas piedāvā spēcīgu un nobriedušu atkritumu savākšanas iespēju komplektu.

  • HotSpot ir vairāki atkritumu savācēji, kas ir optimizēti dažādiem lietošanas gadījumiem, un visi atkritumu savācēji veic to pašu pamatprocesu.
  • Pirmajā solī objekti, uz kuriem nav atsauces tiek identificēti un marķēti kā gatavi atkritumu savākšanai.
  • Otrajā solī atzīmētie objekti tiek izdzēsti. Pēc izvēles atmiņu var sablīvēt pēc atkritumu savācēja objektu dzēšanas, tāpēc atlikušie objekti kaudzes sākumā atrodas blakus esošā blokā. Blīvēšanas process atvieglo secīgu atmiņas piešķiršanu jauniem objektiem pēc esošajiem objektiem piešķirtās atmiņas bloka.

Visi HotSpot atkritumu savācēji īsteno paaudžu savākšanas stratēģiju, kas objektus klasificē pēc vecuma. Paaudžu atkritumu savākšanas pamatojums ir tāds, ka lielākā daļa objektu ir īslaicīgi un drīz pēc izveidošanas būs gatavi atkritumu savākšanai.

Tagad redzēsim, kādi ir dažādi atkritumu savācēju veidi.

Atkritumu savācēja veidi

JVM nodrošina četrus dažādus atkritumu savācējus, kuri visi ir paaudžu. Katram no tiem ir savas priekšrocības un ierobežojumi. Lietotāja izvēle ir atkritumu savācēja izvēle, un caurlaides un lietojuma pauzēs var būt daudz atšķirību.

Proti, ir 4 veidu atkritumu savācēji.

  • Sērijveida atkritumu savācējs (GC) :Visi atkritumu savākšanas pasākumi tiek veikti sērijveidā vienā pavedienā. Blīvēšana tiek veikta pēc katras atkritumu savākšanas.
  • Paralēla / caurlaidīga GC: Nelielai / mazai atkritumu savākšanai tiek izmantoti vairāki pavedieni. Viena vītne tiek izmantota lielākai atkritumu savākšanai un Old Generation blīvēšanai. Arī Parallel variantā tiek izmantoti vairāki pavedieni lielākai atkritumu savākšanai un Old Generation blīvēšanai.
  • CMS kolekcionārs :Mazu / nelielu atkritumu savākšanai tiek izmantoti vairāki pavedieni, izmantojot to pašu algoritmu kā Parallel. Lielākā daļa atkritumu savākšanas ir vairāku pavedienu, taču CMS darbojas vienlaikus ar lietojumprogrammu procesiem, lai samazinātu lietojumprogrammas notikumus. Blīvēšana netiek veikta.
  • G1 kolekcionārs :Šis atkritumu savācējs būtībā ir paredzēts kā CMS aizstājējs. Tā ir paralēla un vienlaicīga kā CMS, taču tā darbojas diezgan atšķirīgi, ja to salīdzina ar vecākiem atkritumu savācējiem.

Sapratīsim Java atkritumu savākšanas priekšrocības.

kā novērst strupceļu java

Priekšrocības

  • Java atkritumu savākšanas lielākais ieguvums ir tas, ka tā tiek automātiski rīkojas ar dzēšanu neizmantotu objektu vai dažu objektu, kuriem nevar piekļūt, lai atbrīvotu atmiņas resursus.
  • Atkritumu savākšana tagad ir jauns daudzu populāru programmēšanas valodu standarta komponents.
  • Tas padara Java atmiņu efektīvu. Tas ir tāpēc, ka atkritumu savācējs noņem atsauces objektus no kaudzes atmiņas.
  • Tas ir automātiski izdarīts pie atkritumu savācēja, kas ir daļa no JVM.

Labākā pieredze

Vislabākā pieeja, lai pielāgotos Java atkritumu savākšanai, ir iestatīt karodziņus JVM. Karodziņiem ir iespēja pielāgot izmantojamo atkritumu savācēju. Tas palīdz padarīt to vispiemērotāko aizmugures apstrādei, kur ir pieņemamas garas atkritumu savākšanas pauzes.

Vēl viena lieta, kas jāatzīmē, ir tas, ka CMS atkritumu savācējs ir paredzēts, lai samazinātu pauzes, kas padara to ideāli piemērotu GUI lietojumprogrammām, kurās reaģētspēja ir ļoti svarīga. Papildu precizēšanu var veikt, mainot kaudzes vai tās sekciju lielumu un izmērot atkritumu savākšanas efektivitāti.

Apskatīsim šo programmu.

klase Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('a =' + a vērtība + System) out.println ('B =' + b + 'vērtība)} 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 ()}}

Šajā gadījumā abitiek izveidoti objekti un divi atsauces mainīgie. Ja pievienojat citu komandu e3 = Null,divi atsauces mainīgie norādīs uz to pašu objektu. Un, ja nav atsauces uz mainīgo, e3 = e2e3.showData () Šajā brīdī uz objektu nav norāžu, un tas kļūst piemērots atkritumu savākšanai.

Tas mūs noved pie šī raksta ‘Garbage Collection in Java’ beigām. Mēs esam iemācījušies noņemt neizmantotos priekšmetus kaudzē un dažādos kolekcijas veidus.

Ja atradāt šo rakstu sadaļā “Atkritumu savākšana Java”, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Mēs esam šeit, lai palīdzētu jums katrā solī jūsu ceļojumā, mēs izstrādājam mācību programmu, kas paredzēta studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā šajā “Atkritumu kolekcija Java ' un mēs pēc iespējas ātrāk sazināsimies ar jums.