Peamine erinevus – prügikoguja vs hävitaja
Enamik programmeerimiskeeli toetab objektorienteeritud programmeerimist. See on metoodika objektide abil programmi või tarkvara loomiseks. Objekt luuakse klassi abil, seega on see klassi eksemplar. Klass kirjeldab, millest objekt peaks koosnema. Objektide loomisel eraldatakse objektidele mälu. Eraldatud mälu tuleks vabastada programmi täitmise lõpus, et seda mälu mõne muu objekti jaoks uuesti kasutada. Programmeerimiskeeled, nagu Java ja C. NET, kasutavad mälu haldamiseks prügikogujaid, samas kui sellised keeled nagu C ja C++ nõuavad programmeerij alt mälu haldamist. Vajalik mälumaht tuleks eraldada ja täitmise lõpus tuleks mälu vabastada. Mälu vabastamiseks kasutatakse prügikogujat ja hävitajat. Peamine erinevus prügikoguja ja hävitaja vahel on see, et prügikorja on tarkvara, mis teostab automaatset mäluhaldust, samas kui hävitaja on spetsiaalne meetod, mille kutsub prügikorja objekti hävitamise ajal.
Mis on prügikorjaja?
Mõned programmeerimiskeeled on hallanud koodikeskkondi. Programmeerimiskeeltes Java ja C teostatakse automaatset mäluhaldust. Programmeerija ei pea vabastama objektide kasutatavat mälu. Neil on lihtsam arendada isegi keerulisi süsteeme, sest mälu haldamine toimub automaatselt. Programmeerimiskeeltes, nagu C, C++ ja Objective C, peaks programm vabastama objektide mälu süsteemi tagasi. Sellised keeled nagu Java ja C suudavad välja selgitada objektid, mida enam ei kasutata. Seejärel vabastavad nad nendele objektidele eraldatud mälu süsteemi tagasi.
Programmeerimiskeeltes C ja Java, kui on olemas klass nimega Student, siis saab objekti luua kasutades Student s=new Student (); "Uut" kasutatakse õpilaste klassi eksemplari loomiseks. See eraldab süsteemis mälu. "S" viitab sellele objektile eraldatud mäluplokile. Keelekeskkonnad tuvastavad, kas objekte kasutatakse või mitte. Kui neid enam ei kasutata, vabastatakse mälu ja seda saab hiljem kasutada.
Joonis 01: Prügikoguja ja -hävitaja
Programmi käivitamisel eraldatakse mäluplokid süsteemimäluvarust. Seejärel täidab programm ülesandeid selle mälu abil. Kui programmi täitmine on lõppenud, selgitab prügikoguja välja, kas programmi jaoks eraldatud mäluplokid on olulised või mitte. Kui neid ei nõuta, tagastatakse need mäluplokid süsteemi. Seega saab prügikorjaja programmis loodud objekte jälgida. Mäluplokid, mida enam ei vajata, saadetakse tagasi süsteemimälu basseini. Selle protsessi peamine eelis on kinnitada, et programmeerija ei pea keskenduma mälu eraldamisele. See tasakaalustab jõudlust ja mälukasutust.
Mis on hävitaja?
Destruktor on klassi eriline liigefunktsioon. Seda kutsutakse välja alati, kui objekt väljub ulatusest. Objekti saab hävitada funktsiooni lõppedes või programmi täitmise lõpus. Destruktoril on klassi nimega sama nimi. Objekti loomisel kasutatakse konstruktorit. See võib aktsepteerida parameetreid. Konstruktoril võivad olla ka tagastusväärtused. Kuid Destructoris pole tagastustüüpi ega aktsepteeritavaid parameetreid. Klass saab koosneda ainult ühest hävitajast. Destruktorile viidatakse tildemärgi abil. Kui klassi nimi on õpilane, siis on destruktoriks ~Student () {}.
Prügikorjaja otsib üles need objektid, mida enam ei vajata. See tagab, et objektid, mida programm enam ei kasuta, tuleks hävitada. See kutsub hävitajat vabastama mälu ja eraldama ressursse. Destruktorid on kasulikud mälu vabastamiseks, failide sulgemiseks, võrguressursside vabastamiseks ja andmebaasiühenduste sulgemiseks. Enamikus programmeerimiskeeltes pole destruktorit vaja kirjutada, sest prügikorjaja kutsub ise vaikimisi konstruktori. Kui programmeerija on teinud dünaamilise mälu jaotuse, kasutades viiteid sellises keeles nagu C++, peaks ta enne objekti hävitamist mälu vabastamiseks kirjutama destruktori.
Milline on prügikoguja ja hävitaja sarnasus?
Nii prügikogujat kui ka hävitajat kasutatakse mälu vabastamiseks, mida programmi jaoks enam vaja pole
Mis vahe on prügikogujal ja hävitajal?
Prügikoguja vs hävitaja |
|
Prügikoguja on tarkvara, mis teostab automaatset mäluhaldust. | Destruktor on spetsiaalne meetod, mille kutsub välja prügikorjaja objekti hävitamise ajal. |
Tüüp | |
Prügikoguja on tarkvara. | Destruktor on meetod. |
Kokkuvõte – prügikoguja vs hävitaja
Prügikoguja ja hävitaja on kaks mõistet, mis on seotud mälu vabastamisega. Selles artiklis käsitleti erinevust prügikoguja ja hävitaja vahel. Prügikoguja ja hävitaja erinevus seisneb selles, et prügikoguja on tarkvara, mis teostab automaatset mäluhaldust, samas kui hävitaja on spetsiaalne meetod, mille prügikoguja objekti hävitamise ajal kutsub.
Laadige alla prügikoguja vs hävitaja PDF-fail
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit: Erinevus prügikoguja ja hävitaja vahel