Будинки Розвиток Що доопрацьовується? - визначення з техопедії

Що доопрацьовується? - визначення з техопедії

Зміст:

Anonim

Визначення - Що означає Фіналізація?

Finalize - це об'єктний метод, який містить код, необхідний для звільнення некерованих ресурсів та виконання операцій очищення перед вивезенням сміття (GC).


Метод завершення використовується для очищення ресурсів, якими не керує .NET. Хоча рамка .NET призначена для випуску керованих ресурсів шляхом неявного виконання завдань управління пам’яттю, некеровані ресурси програми - такі як ручки файлів та підключення до бази даних - повинні бути явно випущені.

Техопедія пояснює Фіналізувати

Хоча фіналізація розроблена так, щоб неявно викликати GC, метод розпорядження може бути явно викликаний кодом користувача, щоб звільнити ресурси.


Фіналізація схожа на традиційні деструктори C ++, оскільки кожен відповідає за звільнення об'єктних ресурсів. Деструктори C ++ виконуються негайно, коли об’єкт виходить із сфери застосування, тоді як остаточне завершення викликається під час очищення об'єкта в GC. У C # доопрацювання не можна безпосередньо викликати чи переосмислювати. Якщо деструктор оголошено, він перетворюється на метод завершення при компіляції програми.


Під час фіналізації слід уникати розподілу пам'яті або виклику віртуальних методів. Обсяг доопрацювання повинен бути захищений таким чином, щоб він мав доступ лише до одного класу або до похідного класу. Фіналізація не повинна посилатися на будь-які інші об'єкти. У C # виклик завершення безпосередньо на об'єкт, відмінний від його базового класу, є недійсною операцією. Код фіналізації повинен бути мінімальним без жодних викликів, здатних блокувати виклик потоку. Оскільки для завершення викликається виділений потік, його код не повинен використовувати локальне зберігання потоку або будь-яку техніку, що вимагає спорідненості потоку.


Використання механізму finalize як резервного механізму для звільнення некерованої пам'яті або ресурсів є надзвичайно важливим через відсутність детермінізму та впливу на продуктивність GC.

Це визначення було написано в контексті .NET
Що доопрацьовується? - визначення з техопедії