Pagrindinis skirtumas – šiukšlių surinkėjas ir naikintojas
Dauguma programavimo kalbų palaiko objektinį programavimą. Tai metodika sukurti programą ar programinę įrangą naudojant objektus. Objektas sukuriamas naudojant klasę, todėl tai yra klasės egzempliorius. Klasė aprašo, iš ko objektas turėtų būti sudarytas. Kuriant objektus, objektams skiriama atmintis. Paskirta atmintis turėtų būti atlaisvinta pasibaigus programos vykdymui, kad tą atmintį būtų galima panaudoti kitam objektui. Programavimo kalbos, tokios kaip Java ir C. NET, naudoja šiukšlių rinktuvus atminties valdymui, o kalbos, tokios kaip C ir C++, reikalauja, kad programuotojas tvarkytų atmintį. Reikėtų skirti reikiamą atminties kiekį, o vykdymo pabaigoje atmintis turėtų būti atlaisvinta. Šiukšlių rinktuvas ir naikintuvas naudojami atminčiai atlaisvinti. Pagrindinis skirtumas tarp šiukšlių surinkėjo ir naikintuvo yra tas, kad šiukšlių rinktuvas yra programinė įranga, kuri atlieka automatinį atminties valdymą, o naikintuvas yra specialus metodas, kurį šiukšlių surinkėjas iškviečia sunaikindamas objektą.
Kas yra šiukšlių surinkėjas?
Kai kuriose programavimo kalbose yra valdomos kodo aplinkos. Programavimo kalbose Java ir C atliekamas automatinis atminties valdymas. Programuotojui nereikia atlaisvinti objektų naudojamos atminties. Jiems lengviau kurti net sudėtingas sistemas, nes atminties valdymas atliekamas automatiškai. Programavimo kalbose, tokiose kaip C, C++ ir Objective C, programa turi grąžinti objektų atmintį į sistemą. Tokios kalbos kaip Java ir C gali išsiaiškinti objektus, kurie nebenaudojami. Vėliau jie grąžina tiems objektams skirtą atmintį į sistemą.
Programavimo kalbose C ir Java, jei yra klasė Studentas, tada objektą galima sukurti naudojant Student s=new Student (); „Naujas“naudojamas kuriant Mokinio klasės egzempliorių. Jis paskirsto atmintį sistemoje. „S“reiškia tam objektui skirtą atminties bloką. Kalbos aplinkos nustato, ar objektai naudojami, ar ne. Jei jie toliau nenaudojami, atmintis atlaisvinama ir gali būti naudojama vėliau.
01 pav.: šiukšlių surinkėjas ir naikintojas
Vykdant programą, atminties blokai yra paskirstomi iš sistemos atminties telkinio. Tada programa atlieka užduotis naudodama tą atmintį. Pasibaigus programos vykdymui, šiukšlių rinkėjas nustato, ar programai skirti atminties blokai yra būtini, ar ne. Jei jie nereikalingi, tie atminties blokai grąžinami į sistemą. Taigi, šiukšlių rinkėjas programoje gali sekti sukurtus objektus. Atminties blokai, kurių nebereikia, siunčiami atgal į sistemos atminties telkinį. Pagrindinis šio proceso pranašumas yra patvirtinimas, kad programuotojas neturi susikoncentruoti ties atminties išskyrimu. Tai subalansuoja našumą ir atminties naudojimą.
Kas yra naikintojas?
Destruktorius yra speciali klasės nario funkcija. Jis iškviečiamas kiekvieną kartą, kai objektas išeina iš taikymo srities. Objektas gali būti sunaikintas pasibaigus funkcijai arba programos vykdymo pabaigoje. Destruktorius turi tą patį pavadinimą kaip ir klasės pavadinimas. Objektui sukurti naudojamas konstruktorius. Jis gali priimti parametrus. Konstruktorius taip pat gali turėti grąžinimo reikšmes. Tačiau „Destructor“nėra grąžinimo tipo ar priimamų parametrų. Klasę gali sudaryti tik vienas naikintojas. Destruktorius nurodomas naudojant tildės ženklą. Jei klasės pavadinimas yra Studentas, tada naikintojas yra ~Student () {}.
Šiukšlių surinkėjas ieško nebereikalingų objektų. Tai užtikrina, kad programos nebenaudojami objektai būtų sunaikinti. Ji ragina naikintoją išlaisvinti atmintį ir paskirstyti išteklius. Destruktoriai yra naudingi norint atlaisvinti atmintį, uždaryti failus, atlaisvinti tinklo išteklius ir uždaryti duomenų bazių ryšius. Daugumoje programavimo kalbų nebūtina rašyti destruktoriaus, nes šiukšlių rinkėjas pats iškviečia numatytąjį konstruktorių. Jei programuotojas atliko bet kokį dinaminį atminties paskirstymą naudodamas rodykles tokia kalba kaip C++, tada jis turėtų parašyti destruktorių, kad atlaisvintų atmintį prieš sunaikinant objektą.
Kuo panašus šiukšlių surinkėjas ir naikintojas?
Tiek šiukšlių surinkėjas, tiek naikintojas naudojami atminčiai, kuri programai nebereikalinga, atlaisvinti
Kuo skiriasi šiukšlių surinkėjas ir naikintuvas?
Šiukšlių surinkėjas prieš naikintoją |
|
Šiukšlių rinktuvas yra programinė įranga, kuri atlieka automatinį atminties valdymą. | Destruktorius yra specialus metodas, kurį iškviečia šiukšlių surinkėjas sunaikindamas objektą. |
Tipas | |
Šiukšlių rinktuvas yra programinė įranga. | Destruktorius yra metodas. |
Santrauka – šiukšlių surinkėjas prieš naikintoją
Šiukšlių surinkėjas ir naikintuvas yra du terminai, susiję su atminties išlaisvinimu. Šiame straipsnyje aptariamas skirtumas tarp šiukšlių surinkėjo ir naikintuvo. Skirtumas tarp šiukšlių rinktuvo ir naikintuvo yra tas, kad šiukšlių rinktuvas yra programinė įranga, kuri atlieka automatinį atminties valdymą, o naikintuvas yra specialus metodas, kurį šiukšlių rinkėjas iškviečia sunaikindamas objektą.
Atsisiųskite „Grabage Collector vs Destructor“PDF failą
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia: Skirtumas tarp šiukšlių surinkėjo ir naikintuvo