Ключова разлика – Garbage Collector срещу Destructor
Повечето езици за програмиране поддържат обектно ориентирано програмиране. Това е методология за изграждане на програма или софтуер, използвайки обекти. Един обект се създава с помощта на клас, така че той е екземпляр на клас. Класът предоставя описанието на това от какво трябва да се състои обектът. При създаване на обекти се разпределя памет за обектите. Разпределената памет трябва да бъде освободена в края на изпълнението на програмата, за да се използва повторно тази памет за някой друг обект. Езици за програмиране като Java и C. NET използват събирачи на боклук за управление на паметта, докато езици като C и C++ изискват програмистът да управлява управлението на паметта. Трябва да се разпредели необходимото количество памет и в края на изпълнението паметта да се освободи. Колекторът и деструкторът на боклук се използват за освобождаване на памет. Ключовата разлика между събирача на отпадъци и деструктора е, че събирачът на боклук е софтуер, който извършва автоматично управление на паметта, докато деструкторът е специален метод, извикан от събирача на боклук по време на унищожаването на обекта.
Какво е Garbage Collector?
Някои езици за програмиране имат среди с управляван код. В езиците за програмиране Java и C се извършва автоматично управление на паметта. Програмистът не трябва да освобождава паметта, използвана от обектите. За тях е по-лесно да разработват дори сложни системи, тъй като управлението на паметта се извършва автоматично. В езици за програмиране като C, C++ и Objective C, програмата трябва да освободи паметта на обектите обратно в системата. Езици като Java и C могат да разберат обектите, които вече не се използват. След това те освобождават паметта, разпределена за тези обекти обратно в системата.
В езиците за програмиране C и Java, ако има клас, наречен Student, тогава обект може да бъде създаден с помощта на Student s=new Student (); „Новият“се използва за създаване на екземпляр на клас Student. Той разпределя памет в системата. „s“се отнася до блока памет, разпределен за този обект. Езиковите среди идентифицират дали обектите се използват или не. Ако не се използват повече, тогава паметта се освобождава и може да се използва по-късно.
Фигура 01: Събирач на отпадъци и деструктор
Когато се изпълнява програма, блоковете памет се разпределят от системния пул памет. След това програмата изпълнява задачите, използвайки тази памет. Когато изпълнението на програмата приключи, събирачът на отпадъци установява дали разпределените блокове памет за програмата са от съществено значение или не. Ако не са необходими, тези блокове памет се връщат в системата. Така че събирачът на отпадъци може да проследява създадените обекти в програмата. Блоковете памет, които вече не са необходими, се изпращат обратно в системния пул памет. Основното предимство на този процес е да потвърди, че програмистът не трябва да се концентрира върху освобождаването на паметта. Той балансира производителността и използването на паметта.
Какво е деструктор?
Деструкторът е специална членска функция на клас. Извиква се всеки път, когато обектът излезе извън обхвата. Обектът може да бъде унищожен, когато функцията приключи или в края на изпълнението на програмата. Деструкторът има същото име като името на класа. Конструкторът се използва за създаване на обекта. Може да приема параметри. Конструкторът може също да има върнати стойности. Но в деструктора няма тип връщане или приемащи параметри. Един клас може да се състои само от един деструктор. Деструкторът се посочва с помощта на знака тилда. Ако името на класа е Student, тогава деструкторът е ~Student () {}.
Събирачът на боклук търси обектите, които вече не са необходими. Той гарантира, че обектите, които вече не се използват от програмата, трябва да бъдат унищожени. Той извиква деструктора да освободи паметта и да освободи ресурсите. Деструкторите са полезни за освобождаване на памет, затваряне на файлове, освобождаване на мрежови ресурси и затваряне на връзки към бази данни. В повечето езици за програмиране не е необходимо да се пише деструктор, защото събирачът на отпадъци извиква конструктора по подразбиране сам. Ако програмистът е направил някакво динамично разпределение на паметта, използвайки указатели на език като C++, тогава той трябва да напише деструктор, за да освободи паметта, преди обектът да бъде унищожен.
Каква е приликата между Garbage Collector и Destructor?
Както Garbage Collector, така и Destructor се използват за освобождаване на памет, която вече не е необходима за програмата
Каква е разликата между Garbage Collector и Destructor?
Garbage Collector срещу Destructor |
|
Garbage collector е софтуер, който извършва автоматично управление на паметта. | Деструкторът е специален метод, извикан от събирача на отпадъци по време на унищожаването на обекта. |
Тип | |
Събирачът на отпадъци е софтуер. | Деструкторът е метод. |
Резюме – Garbage Collector срещу Destructor
Garbage collector и destructor са два термина, свързани с освобождаването на паметта. Тази статия обсъжда разликата между Garbage Collector и destructor. Разликата между събирача на отпадъци и деструктора е, че събирачът на боклук е софтуер, който извършва автоматично управление на паметта, докато деструкторът е специален метод, извикан от събирача на боклук по време на унищожаването на обекта.
Изтеглете PDF файла на Garbage Collector срещу Destructor
Можете да изтеглите PDF версията на тази статия и да я използвате за офлайн цели според бележката за цитиране. Моля, изтеглете PDF версията тук: Разлика между Garbage Collector и Destructor