Turinys:
Apibrėžimas - ką reiškia šiukšlių rinkimas (GC)?
Šiukšlių rinkimas (GC) yra dinamiškas požiūris į automatinį atminties valdymą ir krūvų paskirstymą, kuris apdoroja ir identifikuoja negyvas atminties blokus ir perskirsto saugyklas pakartotiniam naudojimui. Pagrindinis šiukšlių rinkimo tikslas yra sumažinti atminties nutekėjimą.
GC įgyvendinimui reikalingi trys pagrindiniai metodai:
- Pažymėjimas ir valymas - kai trūksta atminties, GC nustato visą prieinamą atmintį ir tada atgauna turimą atmintį.
- Nuorodų skaičiavimas - Paskirtuose objektuose yra nuorodų skaičiaus nuorodų skaičius. Kai atminties skaičius lygus nuliui, objektas yra šiukšlių ir yra sunaikinamas. Išlaisvinta atmintis grįžta į atminties krūvą.
- Kopijų rinkinys - yra du atminties skaidiniai. Jei pirmasis skaidinys yra pilnas, GC nustato visas prieinamas duomenų struktūras ir nukopijuoja jas į antrąjį skaidinį, sutankindamas atmintį po GC proceso ir leisdamas nuolat laisvą atmintį.
Kai kurios programavimo kalbos ir platformos su įmontuotu GC (pvz., „Java“, „Lisp“, C # ir „.Net“) savarankiškai valdo atminties nutekėjimą, kad būtų galima efektyviau programuoti.
„Techopedia“ paaiškina šiukšlių rinkimą (GC)
Šiukšlių rinkimo dinaminis požiūris į automatinį krūvų paskirstymą pašalina įprastas ir brangiai kainuojančias klaidas, kurios, neaptiktos, dažnai sukelia realaus pasaulio programos defektus.
Skirstymo klaidos yra labai brangios, nes jas sunku nustatyti ir ištaisyti. Taigi, šiukšlių rinkimas daugeliu atvejų laikomas esmine kalbos ypatybe, palengvinančia programuotojo darbą atliekant mažesnį rankinį krūvų paskirstymo valdymą. Tačiau GC nėra tobulas ir reikėtų atsižvelgti į šiuos trūkumus:
- Atlaisvindamas atmintį, GC sunaudoja skaičiavimo išteklius.
- GC procesas yra nenuspėjamas, todėl sesijos vėlavimas būna išsklaidytas.
- Kai nenaudojamos objekto nuorodos nėra rankiniu būdu pašalintos, GC sukelia loginės atminties nutekėjimą.
- GC ne visada žino, kada apdoroti šiuolaikinių stalinių kompiuterių virtualiosios atminties aplinkoje.
- GC procesas blogai sąveikauja su talpyklos ir virtualiosios atminties sistemomis, todėl kyla našumo nustatymo sunkumų.
