Pagrindinis skirtumas - šiukšlių surinkėjas ir sunaikintojas
Dauguma programavimo kalbų palaiko į objektą orientuotą programavimą. Tai metodika kurti programą ar programinę įrangą naudojant objektus. Objektas sukurtas naudojant klasę, taigi tai yra klasės egzempliorius. Klasėje pateikiamas objekto aprašymas. Kuriant objektus, objektams skiriama atmintis. Paskirta atmintis turėtų būti atlaisvinta programos vykdymo pabaigoje, kad ta atmintis būtų panaudota kitam objektui. Programavimo kalbos, tokios kaip „Java“ir „C #. NET“, atminties tvarkymui naudoja šiukšlių surinkėjus, o tokios kalbos kaip „C“ir „C ++“reikalauja, kad programuotojas tvarkytų atminties valdymą. Reikėtų skirti reikiamą atminties kiekį, o vykdymo pabaigoje atmintis turėtų būti atlaisvinta. Atminties atlaisvinimui naudojami šiukšlių surinktuvai ir destruktoriai. Esminis skirtumas tarp šiukšlių surinkėjo ir naikintuvo yra tas, kad šiukšlių surinkėjas yra programinė įranga, atliekanti automatinį atminties valdymą, o naikintuvas yra specialus metodas, kurį šiukšlių surinkėjas vadina sunaikinant objektą.
TURINYS
1. Apžvalga ir pagrindiniai skirtumai
2. Kas yra šiukšlių surinkėjas
3. Kas yra naikintuvas
4. Šiukšlių surinkėjo ir sunaikintojo panašumai
5. Šoninis palyginimas - šiukšlių surinkėjas ir sunaikintojas lentelių pavidalu
6. Santrauka
Kas yra šiukšlių surinkėjas?
Kai kurios programavimo kalbos valdo kodo aplinką. Programavimo kalbomis „Java“ir „C #“atliekamas automatinis atminties valdymas. Programuotojui nereikia atlaisvinti atminties, kurią naudoja objektai. Jiems lengviau sukurti net ir sudėtingas sistemas, nes atminties valdymas atliekamas automatiškai. Programavimo kalbose, tokiose kaip C, C ++ ir C tikslas, programa turėtų atlaisvinti objektų atmintį sistemoje. Tokios kalbos kaip „Java“ir „C #“gali išsiaiškinti nebenaudojamus objektus. Vėliau jie atleidžia tiems objektams skirtą atmintį atgal į sistemą.
Programavimo kalbose C # ir Java, jei yra klasė, vadinama Student, tada objektą galima sukurti naudojant Student s = new Student (); „Naujas“naudojamas kuriant studentų klasės egzempliorių. Jis paskirsto atmintį sistemoje. „S“reiškia atminties bloką, skirtą tam objektui. Kalbos aplinkose nustatoma, ar objektai naudojami, ar ne. Jei jie nenaudojami toliau, atmintis atlaisvinama ir gali būti naudojama vėliau.
01 pav. Šiukšlių surinkėjas ir naikintuvas
Vykdant programą, atminties blokai paskirstomi iš sistemos atminties telkinio. Tada programa atlieka užduotis naudodama tą atmintį. Pasibaigus programos vykdymui, šiukšlių surinkėjas išsiaiškina, ar programai skirti atminties blokai yra būtini, ar ne. Jei jų nereikia, tie atminties blokai grąžinami į sistemą. Taigi šiukšlių surinkėjas gali stebėti sukurtus objektus programoje. Nebereikalingi atminties blokai siunčiami atgal į sistemos atminties telkinį. Pagrindinis šio proceso privalumas yra patvirtinti, kad programuotojas neturi susitelkti ties atminties paskirstymu. Tai subalansuoja našumą ir atminties naudojimą.
Kas yra naikintuvas?
Destruktorius yra ypatinga klasės nario funkcija. Jis naudojamas visada, kai objektas išeina iš taikymo srities. Objektą galima sunaikinti pasibaigus funkcijai arba programos vykdymo pabaigoje. Destruktorius turi tą patį pavadinimą kaip ir klasės pavadinimas. Konstruktorius naudojamas objektui sukurti. Jis gali priimti parametrus. Konstruktorius taip pat gali turėti grįžtamąsias vertes. Bet „Destructor“nėra grąžinimo tipo ar priimamų parametrų. Klasę gali sudaryti tik vienas destruktorius. Destruktorius nurodomas naudojant tildės ženklą. Jei klasės pavadinimas yra Studentas, tada destruktorius yra ~ Student () {}.
Šiukšlių surinkėjas ieško nebereikalingų objektų. Tai užtikrina, kad objektai, kurių programa nebenaudoja, turėtų būti sunaikinti. Jis kviečia destruktorių išlaisvinti atmintį ir paskirstyti išteklius. Destruktoriai yra naudingi atlaisvinant atmintį, uždarant failus, atleidžiant tinklo išteklius ir uždarant duomenų bazių ryšius. Daugeliu programavimo kalbų naikintuvo rašyti nebūtina, nes šiukšlių surinkėjas pats iškviečia numatytąjį konstruktorių. Jei programuotojas atliko dinaminį atminties paskirstymą naudodamas rodykles tokia kalba kaip C ++, tada jis turėtų parašyti destruktorių, kad atlaisvintų atmintį prieš sunaikinant objektą.
Koks yra šiukšlių surinkėjo ir sunaikintojo panašumas?
Tiek šiukšlių surinkėjas, tiek „Destructor“naudojami atlaisvinant atmintį, kuri programai nebereikalinga
Koks skirtumas tarp šiukšlių surinkėjo ir naikintuvo?
Skirtingas straipsnis viduryje prieš lentelę
Šiukšlių surinkėjas ir sunaikintojas |
|
Šiukšlių surinkėjas yra programinė įranga, atliekanti automatinį atminties valdymą. | Destruktorius yra specialus metodas, kurį šiukšlių surinkėjas vadina sunaikinant objektą. |
Tipas | |
Šiukšlių surinkėjas yra programinė įranga. | Destruktorius yra metodas. |
Santrauka - šiukšlių surinkėjas ir sunaikintojas
Šiukšlių surinkėjas ir naikintuvas yra du terminai, susiję su atminties atlaisvinimu. Šiame straipsnyje aptariamas skirtumas tarp šiukšlių surinkėjo ir naikintuvo. Skirtumas tarp šiukšlių surinkėjo ir naikintuvo yra tas, kad šiukšlių surinkėjas yra programinė įranga, atliekanti automatinį atminties valdymą, o naikintuvas yra specialus metodas, kurį šiukšlių surinkėjas vadina sunaikinant objektą.
Atsisiųskite „Garbage 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