У програмским језицима објект може имати променљиву само током свог постојања, након примеравања не може да се мења. Тако се иста ћелија меморије не може доделити новим вредностима, па је за управљање неискориштеним просторима потребно нека врста аутоматизованог управљања меморијом. Ови неискориштени простори називају се смећем, а цео процес ефикасног управљања меморијом назива се смеће.
Главни циљ сакупљача смећа је одвајање мртвих предмета од живих објеката и поврат простора за поновну употребу. У основи, цела ствар функционише на управљаној хрпи, што није ништа друго него меморијски блок, а сакупљач смећа периодично проверава меморију гомиле и додељује меморију новим објектима. Постоје две методе за ослобађање неуправљаних ресурса попут датотека и веза са базом података: Диспосе анд Финализе.
Овај вам чланак помаже да схватите разлику између то двоје.
Диспосе је стандардни начин да корисници кажу објектима да ослободе своје ресурсе и да више не покушавају да приступе објектима. Начин одлагања омогућава контролу експлицитног чишћења меморије чинећи објекте неупотребљивим.
Када корисници позову методу Диспосе (), објект би требао ослободити све своје скупе ресурсе и учинити их доступним за поновну употребу. Сакупљач смећа никада га не зове који се репродукује тек када управљана меморија постане оскудна. Посебно сучеље под називом „ИДиспосабле“ користи се за одлучивање где и како имплементирати Диспосе (). Али шта се дешава када метода одлагања не буде позвана?
Ако се метода одлагања не зове, резервни план је да се користи метода Финализе () за чишћење. Сакупљач смећа га зове да изврши завршно чишћење ресурса пре него што ослободи меморију. Концепт правовременог чишћења постаје овде непримењив, јер уместо да се меморија одмах додели, објект се додаје у ред за финализацију да би се касније уништио. Финализирање је више попут заштитног програма који се поставља у случају грешке у програмирању и одлагање не чисти ресурсе. У том случају сакупљач смећа позива методу Финализе () да уклони недоступне предмете у било којем редоследу који воли.
Позива се метода одлагања како би се убрзало ослобађање неуправљаних ресурса, као што су ручке базе података, ручке датотека, семафори и други објекти додељени у оперативном систему. Начин диспозиције позива се да изврши код потребан за чишћење неискориштене меморије и оскудних ресурса као што су ГДИ ручке. Једноставно речено, метода одлагања омогућава контролу експлицитног чишћења меморије. Метода финализације, с друге стране, део је одвоза смећа који се користи за обављање завршних операција чишћења на објекту пре него што се смеће сакупља. Једноставно речено, метода финализације позива се на ослобађање неуправљаних ресурса које објект посједује прије него што се он уништи.
Метода располагања може се изричито позвати корисничким кодом и класом која имплементира метод за располагање ресурсима. Међутим, меморија се не може ослободити све док сакупљач смећа не изврши поступак чишћења. Метода се може назвати чак и ако постоје друге референце на објект. Метода финализације, напротив, сакупљач смећа може позвати тек након што утврди да је последња инстанца меморијског објекта уништена и да више нема референце на објект. Након извршења методе финализације, објект се уклања из хеап меморије.
Процес одлагања предмета из меморије назива се образац одлагања, који се може користити за објекте који приступају неуправљаним ресурсима јер сакупљач смећа не може да поврати неуправљане ресурсе. Интерфејс „ИДиспосабле“ заједно са додатном методом Диспосе (Боолеан) имплементира се тражећи ослобађање неуправљаних ресурса. Метода финализације се извршава када се инстанца објекта уништи прије његове размјештања. То је недетеринистичка метода која се дешава по нахођењу сакупљача смећа, а може се и не појавити. Не треба га применити на управљаним објектима све док је то крајње неопходно.
Много је брже користити методу збрињавања, а не довршити за тренутно одлагање предмета. Деструктори се аутоматски претварају у финализацију у време извођења. Апарат за прикупљање смећа аутоматски се позива када објекат изађе из обима, што се обично дешава када је инстанца тог објекта уништена. Проблем са методом финализације је у томе што није недетерминистичко, што значи да није сигурно када повратити меморију која се више не референцира кроз одвоз смећа. Међутим, можда неће одмах ослободити меморију; у ствари, никад се не може назвати и не може се експлицитно форсирати.
Главна разлика између метода располагања и финализације је та што је прва метода детерминирана која тренутно распоређује објекте када се више не користе, док је друга недетерминистичка метода за доделу неуправљаних ресурса, што значи да је метода повратног ослобађања случајеви меморијског објекта када изађу из досега пре размештања. Увек је препоручљиво користити методу одлагања током финализације, осим ако није крајње неопходно.
Другим речима, финализација је заштитно средство које се поставља ради чишћења неуправљаних ресурса када се метода одлагања не може позвати у случају неке програмске грешке. Метода довршетка назива се сакупљачем смећа када ће се неки предмет избацити из меморије из хрпе.