„Java“ šiukšlių rinkimas: viskas, ką reikia žinoti



Šis straipsnis apie „Java“ šiukšlių surinkimą suteikia jums aiškią idėją apie tai, kaip jis veikia, kokių tipų ir skirtingus metodus rasite „Java“ šiukšlių surinkime.

yra bendrosios paskirties programavimo kalba ir jei sugalvosite, kad jūsų programoje yra nepanaudotų duomenų ir nežinote, kaip su jais elgtis, „Java“ šiukšlių rinkimas yra naudingas. Taigi, aš rašau šį straipsnį norėdamas padėti jums tvarkyti šias funkcijas.

Aš aptarsiu temas tokia tvarka:





Pradėkime!

Kas yra „Java“ šiukšlių rinkimas?

Programoje „Java“ programuotojai susiduria su problema sunaikinti objektai kurie yra nenaudojami. Bet su šiukšlių surinkėju tuo galima lengvai pasirūpinti. Pagrindinis šio šiukšlių surinkėjo tikslas yra atlaisvinti atminties kaupą sunaikinant objektus, kuriuose nėra nuorodos. Metodas yra žinomas kaip Šiukšlių kolekcija.



Tai taip pat laikoma programa, padedančia atlikti automatinį atminties valdymą. Kada yra paleisti JVM, objektai yra sukurti ant kaupo, kuris iš tikrųjų yra programai skirta atminties dalis. Galų gale kai kurių objektų nebereikės. šiukšlių surinkėjas suranda šiuos nenaudojamus objektus ir juos ištrina, kad atlaisvintų šiek tiek atminties.

  • Programos, kurios neišskiria atminties, ilgainiui gali nutrūkti, kai sistemoje neliks vietos, kurią būtų galima paskirstyti. Teigiama, kad visose šiose programose trūksta atminties.
  • „Java“ šiukšlių surinkimas vyksta automatiškai programos veikimo metu, pašalinant būtinybę paskirstyti atmintį ir išvengiant atminties nutekėjimo.
  • Tokie metodai kaip Laisvas() C ir Ištrinti() C ++ yra naudojami, tačiau, Java, tai atliekama automatiškai. Taigi, užtikrina geresnį atminties valdymą.

Dabar supraskime, kaip šis automatinis šiukšlių surinkimas veikia „Java“.

Pastaba : Sakoma, kad objektą galima rinkti šiukšles, jei jis nepasiekiamas.



kas yra duomenų mokslo kursas

Kaip veikia šiukšlių surinkimas?

Šiukšlių surinkimas yra procesas su kaupu ir taip pat ženklas arba nustatykite nepasiekiamus objektus ir sunaikinkite juos sutankindami.

Šiukšlių rinkimas „Java“ yra automatinis procesas ir programuotojui nereikia aiškiai pažymėti ištrinamų objektų. Įgyvendinimas daugiausia gyvena . Kiekvienas JVM gali įgyvendinti šiukšlių surinkimą. Vienintelis reikalavimas yra tai, kad jis atitiktų JVM specifikaciją.

Nors yra daug JVM, „Oracle“ „HotSpot“ yra labiausiai paplitęs, nes siūlo tvirtą ir brandų šiukšlių surinkimo galimybių rinkinį.

  • „HotSpot“ turi keletą šiukšlių surinkėjų, kurie yra optimizuoti įvairiems naudojimo atvejams, o visi šiukšlių surinkėjai vykdo tą patį pagrindinį procesą.
  • Pirmame žingsnyje nerekomenduojami objektai yra identifikuoti ir pažymėti kaip paruošti šiukšlių surinkimui.
  • Antrame etape pažymėti objektai ištrinami. Pasirinktinai, atmintį galima sutankinti po to, kai šiukšlių surinkėjas ištrina objektus, todėl likę objektai yra gretimame bloke krūvos pradžioje. Sutankinimo procesas palengvina atminties paskirstymą naujiems objektams nuosekliai po atminties bloko, skirto esamiems objektams.

Visi „HotSpot“ šiukšlių surinkėjai įgyvendina kartų surinkimo strategiją, pagal kurią objektai skirstomi pagal amžių. Kartų atliekų surinkimo pagrindas yra tas, kad dauguma objektų yra trumpalaikiai ir netrukus po sukūrimo bus paruošti šiukšlių surinkimui.

Dabar pažiūrėkime, kokie yra skirtingi šiukšlių surinkėjų tipai.

Šiukšlių surinkėjo rūšys

JVM teikia keturis skirtingus šiukšlių surinkėjus, kurie visi yra kartiniai. Kiekvienas iš jų turi savo privalumų ir apribojimų. Naudotojas gali pasirinkti, kurį šiukšlių surinktuvą naudoti, ir gali būti daugybė pralaidumo ir taikymo pauzių skirtumų.

Yra 4 rūšių šiukšlių surinkėjai.

  • Nuoseklus šiukšlių surinkėjas (GC) :Visi šiukšlių surinkimo renginiai nuosekliai vykdomi viena gija. Tankinimas atliekamas po kiekvieno šiukšlių surinkimo.
  • Lygiagretus / pralaidumas GC: Nedidelėms / mažoms šiukšlėms surinkti naudojami keli siūlai. Pagrindinis siūlas naudojamas atliekų surinkimui ir „Old Generation“ tankinimui. Be to, „Parallel“ variante naudojamos kelios gijos pagrindiniam šiukšlių surinkimui ir „Old Generation“ tankinimui.
  • TVS kolekcininkas :Mažos / smulkios šiukšlių surinkimui naudojamos kelios gijos, naudojant tą patį algoritmą kaip ir „Parallel“. Didžioji šiukšlių surinkimo dalis yra daugialypė, tačiau CMS kartu su taikymo procesais vykdoma tuo pačiu metu, kad būtų sumažintas programos įvykis. Tankinimas nėra atliekamas.
  • G1 kolekcininkas :Šis šiukšlių surinkėjas iš esmės yra skirtas TVS pakaitalui. Jis lygiagretus ir lygiagretus kaip CMS, tačiau jis veikia visai kitaip, lyginant su senesniais šiukšlių surinkėjais.

Supraskime „Java“ šiukšlių rinkimo pranašumus.

Privalumai

  • Didžiausias „Java“ šiukšlių surinkimo privalumas yra tas, kad jis automatiškai tvarko ištrynimą nenaudojamų objektų ar kai kurių objektų, prie kurių negalima atlaisvinti atminties išteklių.
  • Šiukšlių rinkimas dabar yra naujas standartinis daugelio populiarių programavimo kalbų komponentas.
  • Tai daro „Java“ atminties efektyvumą. Taip yra todėl, kad šiukšlių surinkėjas pašalina nerekomenduojamus objektus iš kaupo atminties.
  • tai yra automatiškai padaryta atliekų surinkėjas, kuris yra JVM dalis.

Geriausia praktika

Geriausias būdas prisitaikyti prie „Java“ šiukšlių surinkimo yra JVM nustatant vėliavas. Vėliavos turi galimybę reguliuoti naudojamą šiukšlių surinkėją. Tai padeda padaryti ją geriausiai tinkančią procesoriaus apdorojimui, kai ilgos šiukšlių surinkimo pauzės yra priimtinos.

Kitas dalykas, į kurį reikia atkreipti dėmesį, yra tai, kad CMS šiukšlių surinkėjas yra sukurtas siekiant sumažinti pauzes, todėl jis idealiai tinka GUI programoms, kuriose labai svarbu reaguoti. Papildomas koregavimas gali būti atliktas keičiant kaupo ar jo dalių dydį ir išmatuojant šiukšlių surinkimo efektyvumą.

Pažvelkime į šią programą.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('a =' + a reikšmė) System.out.println ('B =' + b) reikšmė} 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 ()}}

Šiuo atveju dusukuriami objektai ir du pamatiniai kintamieji. Jei pridėsite kitą komandą e3 = Null,du pamatiniai kintamieji nurodys tą patį objektą. Jei nėra nuorodos į kintamąjį, e3 = e2e3.showData (). Šiuo metu nėra nuorodų, nukreipiančių į objektą, ir jis tampa tinkamas šiukšlių surinkimui.

Taip pateksime į šio straipsnio „Šiukšlių kolekcija„ Java “pabaigą. Sužinojome, kaip pašalinti nenaudojamus daiktus krūvoje ir įvairius kolekcijos tipus.

Jei radote šį straipsnį „Java šiukšlių surinkimas“, patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. Mes norime jums padėti kiekviename jūsų kelionės žingsnyje, mes parengėme mokymo programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais.

Turite mums klausimą? Prašau tai paminėti šios „Šiukšlių kolekcijos„ Java “komentarų skiltyje ' ir mes kuo greičiau susisieksime su jumis.

„Microsoft SQL“ serverio pamokos pradedantiesiems