Фіналізатор — спеціальний метод в об'єктно орієнтованих мовах програмування, які використовують збирання сміття при управлінні пам'яттю. Він викликається середовищем виконання під час видалення об'єкта.
Фіналізатор об'єкта викликається у не визначений час після того як збирач сміття визначить об'єкт як невикористовуємий, але перед вивільненням пам'яті котру займає об'єкт.
Використання фіналізаторів має багато недоліків, тому рекомендується надавати перевагу шаблону Dispose.
У мовах ООП з безпосереднім управлінням пам'яттю, аналогом фіналізатора є деструктор.
Недоліки
- Фіналізатор не може бути викликаний в наперед заданий момент часу, чи може зовсім не викликатись.
- Під час виклику фіналізатора, неможливо знати стан інших частин програми. Тому обробка винятків із фіналізатора зазвичай не можлива.
- Неможливо викликати фіналізатори в бажаному порядку.
- Під час виклику фіналізатора, уже може не виконуватись.
- Фіналізатор може спричинити воскресіння об'єкта. Це уповільнить виконання фіналізаторів та може спричинити помилки у програмі.
- Якщо дефіцитні ресурси звільняються у фіналізаторі, то це може спричинити ресурсний голод.
- Фіналізатори викликаються із збирача сміття, який реагує на дефіцит пам'яті, тому не пристосовані боротись із дефіцитом ресурсів інших типів.
- Фіналізатор може спричинити проблеми синхронізації навіть у програмі із однією ниткою виконання, оскільки фіналізатори виконуються окремою ниттю. Навіть може спричинити взаємне блокування.
- Фіналізатори зазвичай не виконуються під час завершення програми, оскільки можуть завадити завершенню.
Джерела
- Брюс Эккель. Философия Java. Библиотека программиста. 4-е изд. - СПб: Питер, 2009.
- Joshua Bloch. Effective Java. Addison-Westley, 2001.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Finalizator specialnij metod v ob yektno oriyentovanih movah programuvannya yaki vikoristovuyut zbirannya smittya pri upravlinni pam yattyu Vin viklikayetsya seredovishem vikonannya pid chas vidalennya ob yekta Finalizator ob yekta viklikayetsya u ne viznachenij chas pislya togo yak zbirach smittya viznachit ob yekt yak nevikoristovuyemij ale pered vivilnennyam pam yati kotru zajmaye ob yekt Vikoristannya finalizatoriv maye bagato nedolikiv tomu rekomenduyetsya nadavati perevagu shablonu Dispose U movah OOP z bezposerednim upravlinnyam pam yattyu analogom finalizatora ye destruktor NedolikiFinalizator ne mozhe buti viklikanij v napered zadanij moment chasu chi mozhe zovsim ne viklikatis Pid chas vikliku finalizatora nemozhlivo znati stan inshih chastin programi Tomu obrobka vinyatkiv iz finalizatora zazvichaj ne mozhliva Nemozhlivo viklikati finalizatori v bazhanomu poryadku Pid chas vikliku finalizatora uzhe mozhe ne vikonuvatis Finalizator mozhe sprichiniti voskresinnya ob yekta Ce upovilnit vikonannya finalizatoriv ta mozhe sprichiniti pomilki u programi Yaksho deficitni resursi zvilnyayutsya u finalizatori to ce mozhe sprichiniti resursnij golod Finalizatori viklikayutsya iz zbiracha smittya yakij reaguye na deficit pam yati tomu ne pristosovani borotis iz deficitom resursiv inshih tipiv Finalizator mozhe sprichiniti problemi sinhronizaciyi navit u programi iz odniyeyu nitkoyu vikonannya oskilki finalizatori vikonuyutsya okremoyu nittyu Navit mozhe sprichiniti vzayemne blokuvannya Finalizatori zazvichaj ne vikonuyutsya pid chas zavershennya programi oskilki mozhut zavaditi zavershennyu DzherelaBryus Ekkel Filosofiya Java Biblioteka programmista 4 e izd SPb Piter 2009 ISBN 978 5 388 00003 3 Joshua Bloch Effective Java Addison Westley 2001