Ključna razlika – sakupljač smeća vs destruktor
Većina programskih jezika podržava objektno orijentirano programiranje. To je metodologija za pravljenje programa ili softvera pomoću objekata. Objekt se kreira pomoću klase, tako da je instanca klase. Klasa daje opis od čega bi se objekat trebao sastojati. Prilikom kreiranja objekata, memorija se dodjeljuje objektima. Dodijeljenu memoriju treba osloboditi na kraju izvođenja programa kako bi se ta memorija ponovo koristila za neki drugi objekt. Programski jezici kao što su Java i C. NET koriste sakupljače smeća za upravljanje memorijom, dok jezici kao što su C i C++ zahtijevaju od programera da upravlja upravljanjem memorijom. Potrebno je dodijeliti potrebnu količinu memorije, a na kraju izvršavanja memoriju treba osloboditi. Sakupljač smeća i destruktor se koriste za oslobađanje memorije. Ključna razlika između sakupljača smeća i destruktora je u tome što je sakupljač smeća softver koji obavlja automatsko upravljanje memorijom, dok je destruktor posebna metoda koju zove sakupljač smeća tokom uništavanja objekta.
Šta je sakupljač smeća?
Neki programski jezici imaju okruženja za upravljanje kodom. U programskim jezicima Java i C vrši se automatsko upravljanje memorijom. Programer ne treba da oslobađa memoriju koju koriste objekti. Lakše im je razviti čak i složene sisteme jer se upravljanje memorijom vrši automatski. U programskim jezicima kao što su C, C++ i Objective C, program bi trebao osloboditi memoriju objekata nazad u sistem. Jezici kao što su Java i C mogu otkriti objekte koji se više ne koriste. Nakon toga puštaju memoriju dodijeljenu za te objekte nazad u sistem.
U programskim jezicima C i Java, ako postoji klasa koja se zove Student, tada se objekat može kreirati koristeći Student s=new Student (); 'New' se koristi za kreiranje instance klase Student. On dodeljuje memoriju u sistemu. Znak 's' se odnosi na memorijski blok koji je dodijeljen tom objektu. Jezička okruženja identifikuju da li se objekti koriste ili ne. Ako se ne koriste dalje, memorija se oslobađa i može se koristiti kasnije.
Slika 01: Sakupljač i destruktor smeća
Kada se pokreće program, blokovi memorije se dodeljuju iz sistemske memorije. Zatim program izvršava zadatke koristeći tu memoriju. Kada se izvršavanje programa završi, sakupljač smeća otkriva jesu li dodijeljeni blokovi memorije za program bitni ili ne. Ako nisu potrebni, ti memorijski blokovi se vraćaju sistemu. Dakle, sakupljač smeća može pratiti kreirane objekte u programu. Memorijski blokovi koji više nisu potrebni šalju se natrag u sistemsku memoriju. Glavna prednost ovog procesa je potvrda da se programer ne mora koncentrirati na raspodjelu memorije. Balansira performanse i upotrebu memorije.
Šta je destruktor?
Destruktor je posebna funkcija člana klase. Poziva se kad god objekat izađe iz opsega. Objekt se može uništiti kada se funkcija završi ili na kraju izvršavanja programa. Destruktor ima isto ime kao i ime klase. Konstruktor se koristi za kreiranje objekta. Može prihvatiti parametre. Konstruktor također može imati povratne vrijednosti. Ali u destruktoru, ne postoji tip povratka ili prihvatljivi parametri. Klasa se može sastojati samo od jednog destruktora. Destruktor se upućuje pomoću znaka tilde. Ako je ime klase Student, tada je destruktor ~Student () {}.
Skupljač smeća traži objekte koji više nisu potrebni. Osigurava da objekti koje program više ne koristi trebaju biti uništeni. Poziva destruktor da oslobodi memoriju i oslobodi resurse. Destruktori su korisni za oslobađanje memorije, zatvaranje datoteka, oslobađanje mrežnih resursa i zatvaranje veza baze podataka. U većini programskih jezika nije potrebno pisati destruktor jer sakupljač smeća sam poziva zadani konstruktor. Ako je programer izvršio bilo kakvu dinamičku alokaciju memorije koristeći pokazivače na jeziku kao što je C++, onda bi trebao napisati destruktor za oslobađanje memorije prije nego što se objekt uništi.
Koja je sličnost između sakupljača smeća i destruktora?
I Garbage Collector i Destructor se koriste za oslobađanje memorije koja više nije potrebna za program
Koja je razlika između sakupljača smeća i destruktora?
Garbage Collector vs Destructor |
|
Skupljač smeća je softver koji obavlja automatsko upravljanje memorijom. | Destruktor je posebna metoda koju poziva sakupljač smeća tokom uništavanja objekta. |
Tip | |
Skupljač smeća je softver. | Destruktor je metoda. |
Sažetak – sakupljač smeća vs destruktor
Garbage collector i destructor su dva pojma povezana sa oslobađanjem memorije. Ovaj članak govori o razlici između sakupljača smeća i destruktora. Razlika između sakupljača smeća i destruktora je u tome što je sakupljač smeća softver koji obavlja automatsko upravljanje memorijom, dok je destruktor posebna metoda koju poziva sakupljač smeća tokom uništavanja objekta.
Preuzmite PDF-u Garbage Collector vs Destructor
Možete preuzeti PDF verziju ovog članka i koristiti je za vanmrežne svrhe prema napomeni o citatu. Molimo preuzmite PDF verziju ovdje: Razlika između sakupljača smeća i destruktora