Diferența cheie – Garbage Collector vs Destructor
Majoritatea limbajelor de programare acceptă programarea orientată pe obiecte. Este o metodologie de a construi un program sau un software folosind obiecte. Un obiect este creat folosind o clasă, deci este o instanță a unei clase. O clasă oferă descrierea din ce ar trebui să constă obiectul. La crearea obiectelor, se alocă memorie pentru obiecte. Memoria alocată ar trebui să fie eliberată la sfârșitul execuției programului pentru a reutiliza acea memorie pentru un alt obiect. Limbajele de programare precum Java și C. NET folosesc colectori de gunoi pentru gestionarea memoriei, în timp ce limbaje precum C și C++ necesită programator să se ocupe de gestionarea memoriei. Ar trebui alocată cantitatea necesară de memorie, iar la sfârșitul execuției, memoria trebuie eliberată. Garbage collector și destructor sunt folosite pentru eliberarea memoriei. Diferența cheie dintre garbage collector și destructor este că un garbage collector este un software care realizează gestionarea automată a memoriei, în timp ce un destructor este o metodă specială numită de garbage collector în timpul distrugerii obiectului.
Ce este un colector de gunoi?
Unele limbaje de programare au medii de coduri gestionate. În limbajele de programare Java și C se realizează gestionarea automată a memoriei. Programatorul nu trebuie să elibereze memoria folosită de obiecte. Le este mai ușor să dezvolte chiar și sisteme complexe deoarece gestionarea memoriei se face automat. În limbaje de programare precum C, C++ și Objective C, programul ar trebui să elibereze memoria obiectelor înapoi în sistem. Limbaje precum Java și C pot descoperi obiectele care nu mai sunt folosite. Ulterior, ei eliberează memoria alocată pentru acele obiecte înapoi în sistem.
În limbajele de programare C și Java, dacă există o clasă numită Student, atunci un obiect poate fi creat folosind Student s=new Student (); „Nou” este folosit pentru a crea o instanță a clasei Student. Alocă memorie în sistem. „S” se referă la blocul de memorie alocat pentru acel obiect. Mediile de limbaj identifică dacă obiectele sunt utilizate sau nu. Dacă nu sunt folosite în continuare, atunci memoria este eliberată și poate fi folosită mai târziu.
Figura 01: Colector și distrugător de gunoi
La rularea unui program, blocurile de memorie sunt alocate din pool-ul de memorie de sistem. Apoi programul efectuează sarcinile folosind memoria respectivă. Când execuția programului se termină, colectorul de gunoi își dă seama dacă blocurile de memorie alocate pentru program sunt esențiale sau nu. Dacă nu sunt necesare, acele blocuri de memorie sunt returnate sistemului. Deci, colectorul de gunoi poate urmări obiectele create în program. Blocurile de memorie care nu mai sunt necesare sunt trimise înapoi la pool-ul de memorie de sistem. Principalul avantaj al acestui proces este de a confirma că programatorul nu trebuie să se concentreze pe dealocarea memoriei. Echilibrează performanța și utilizarea memoriei.
Ce este un Destructor?
Un destructor este o funcție specială de membru a unei clase. Este invocat ori de câte ori obiectul iese din domeniul de aplicare. Obiectul poate fi distrus atunci când o funcție se termină sau la sfârșitul execuției programului. Destructorul are același nume ca și numele clasei. Constructorul este folosit pentru a crea obiectul. Poate accepta parametri. Constructorul poate avea și valori returnate. Dar într-un Destructor, nu există niciun tip de returnare sau parametri de acceptare. O clasă poate consta doar dintr-un singur distrugător. Un destructor este referit folosind semnul tilde. Dacă numele clasei este Student, atunci destructorul este ~Student () {}.
Colectorul de gunoi caută obiectele care nu mai sunt necesare. Se asigură că obiectele care nu mai sunt folosite de program ar trebui să fie distruse. Îl cheamă pe destructor să elibereze memoria și să dealocați resursele. Destructorii sunt utili pentru eliberarea memoriei, închiderea fișierelor, eliberarea resurselor de rețea și pentru a închide conexiunile la baze de date. În majoritatea limbajelor de programare, nu este necesar să scrieți destructorul deoarece colectorul de gunoi apelează singur constructorul implicit. Dacă programatorul a făcut o alocare dinamică de memorie folosind pointeri într-un limbaj precum C++, atunci ar trebui să scrie un destructor pentru a elibera memoria înainte ca obiectul să fie distrus.
Care este asemănarea dintre Garbage Collector și Destructor?
Atât Garbage Collector, cât și Destructor sunt folosite pentru a elibera memoria care nu mai este necesară pentru program
Care este diferența dintre colectorul de gunoi și distrugător?
Garbage Collector vs Destructor |
|
Un colector de gunoi este un software care realizează gestionarea automată a memoriei. | Un destructor este o metodă specială numită de gunoiul în timpul distrugerii obiectului. |
Tip | |
Un colector de gunoi este un software. | Un destructor este o metodă. |
Rezumat – Garbage Collector vs Destructor
Colector de gunoi și distrugător sunt doi termeni asociați cu eliberarea memoriei. Acest articol a discutat diferența dintre Garbage Collector și destructor. Diferența dintre garbage collector și destructor este că un garbage collector este un software care realizează gestionarea automată a memoriei, în timp ce un destructor este o metodă specială numită de garbage collector în timpul distrugerii obiectului.
Descărcați PDF-ul Garbage Collector vs Destructor
Puteți descărca versiunea PDF a acestui articol și să o utilizați în scopuri offline, conform nota de citare. Vă rugăm să descărcați versiunea PDF aici: Diferența dintre Garbage Collector și Destructor