Разлика между dispose () и finalize ()

Съдържание:

Разлика между dispose () и finalize ()
Разлика между dispose () и finalize ()

Видео: Разлика между dispose () и finalize ()

Видео: Разлика между dispose () и finalize ()
Видео: #30 Какая разница между методами Finalize и Dispose? Ответ на вопрос собеседования C# / .Net 2024, Ноември
Anonim

Ключова разлика – изхвърляне () срещу финализиране ()

Ключовата разлика между dispose () и finalize () е, че dispose () трябва да бъде изрично извикан от програмиста, докато finalize () се извиква от събирача на отпадъци, преди да унищожи обекта.

Изхвърлянето () е метод за затваряне или освобождаване на неуправлявани ресурси като файлове, потоци, държани от обект. Финализирането е метод за извършване на операции за почистване на неуправлявани ресурси, държани от текущия обект, преди обектът да бъде унищожен.

Какво е dispose()?

Едно от най-важните предимства на. NET framework е, че осигурява автоматично събиране на боклука. Автоматично освобождава паметта на обектите, които не се използват. В езиците за програмиране като C и C++ програмистът трябва сам да управлява паметта. Но в езици като C, който е изграден върху. NET framework, осигурява събирач на боклук. Помага за управление на паметта. Не може да се използва за освобождаване на неуправляваните ресурси на паметта. Методът dispose () може да се използва за постигане на тази задача.

Разлика между dispose () и finalize ()
Разлика между dispose () и finalize ()

Методът dispose () може да се използва за освобождаване на ресурси като връзки към бази данни, манипулатори на файлове и т.н. Този метод не се извиква автоматично. Следователно програмистът трябва да приложи този метод. Веднага щом този метод бъде извикан, паметта за конкретния неуправляван ресурс се освобождава. Този метод е деклариран в интерфейса IDisposeable.

Какво е finalize ()?

Методът finalize се извиква само от събирача на отпадъци, когато препратката към обект не се използва повече. Този метод се извиква непосредствено преди унищожаването на обекта. Този метод се реализира с помощта на деструктора. Методът за финализиране е дефиниран в класа java.lang.object. Този метод е деклариран като защитен. Не е деклариран като публичен, за да се избегне достъп от други класове. Като цяло, методът за финализиране може да минимизира производителността на програмата, тъй като не освобождава незабавно паметта.

Каква е приликата между dispose () и finalize()?

Както dispose (), така и finalize() могат да се използват за освобождаване на паметта, разпределена за неуправляван ресурс

Каква е разликата между dispose () и finalize()?

изхвърляне () срещу финализиране ()

Изхвърлянето () е метод за затваряне или освобождаване на неуправлявани ресурси като файлове, потоци, съхранявани от обект. Финализирането е метод за извършване на операции за почистване на неуправлявани ресурси, държани от текущия обект, преди обектът да бъде унищожен.
Цел
Методът dispose се използва за освобождаване на неуправляваните ресурси, когато бъде извикан. Методът finalize се използва за освобождаване на неуправляваните ресурси, преди обектът да бъде унищожен.
Дефиниран интерфейс или клас
Изхвърлянето () е дефинирано в интерфейса IDisposable. Finalize () е дефиниран в клас java.lang.object.
Метод за извикване
Методът dispose се извиква от програмиста. Методът за финализиране се извиква от събирача на отпадъци.
Определител за достъп
Методът на изхвърляне е публичен. Методът за финализиране е защитен.
Скорост
Методът dispose се извиква моментално. Методът за финализиране се извиква бавно.
Ефективност
Изхвърлянето няма да намали производителността на програмата. Методът за финализиране може да минимизира производителността на програмата.

Резюме – изхвърляне () срещу финализиране ()

Тази статия обсъжда разликата между методите dispose и finalize в C. Разликата между dispose () и finalize () е, че dispose () трябва да бъде изрично извикан от програмиста, докато finalize () се извиква от събирача на отпадъци, преди да унищожи обекта.

Препоръчано: