Užbaigiklis (programavimas)

Užbaigiklis () – specialus objekto metodas, kurį vykdanti sistema automatiškai iškviečia, kuomet objektas nebėra pasiekiamas programos kodo (nebėra jokios nuorodos į jį).finalize() metodo dokumentacija Oracle Java specificijoje. Užbaigiklis atlieka įvairius šiuo atveju būtinus klasei specifinius veiksmus.

Skirtingai nuo destruktoriaus, kuris programos kode kviečiamas tiesiogiai, užbaigiklio iškvietimo laikas paprastai nėra apibrėžtas. Vykdanti sistema gali jį iškviesti tiek tuojau pat objektui tapus nepasiekiamu, tiek vėliau ar (jei atminties pakanka) taip ir užbaigti programos vykdymą jo neiškvietus. Neapibrėžta ir laiko trukmė nuo užbaigiklio iššaukimo iki objekto sunaikinimo. Todėl užbaigiklis blogai tinka tvarkyti greitai išsekti galintiems resursams (tinklo jungtims ir pan). Destruktoriaus neturinčiose kalbose (Java) tokie resursai kiek galima greičiau grąžinami sistemai kitokiomis programavimo konstrukcijomis (try/catch ir pan).Joshua Bloch (2008). Creating and Destroying Java Objects.

Paprastai laikoma klaida tiesiogiai kviesti užbaigiklį iš vykdomos programos kodo.

Jei užbaigiklio kodas sukuria naujų nuorodų į objektą, toks objektas gali būti „prikeliamas“. Ši galimybė apsunkina šiukšlių surinktuvo darbą, nors naudojama retai. Jei po to nuorodos vėl prarandamos, kai kuriose kalbose (Java) užbaigiklis antrą kartą nebeiškviečiamas.What is resurrection (in garbage collection)?. www.xyzws.com Kalbose kurios užbaigiklį iškviečia pakartotinai (Python)Tim Peters’s answer to „How many times can `__del__` be called per object in Python?“ galimi „nemirtingi objektai“, neribotai ilgai išliekantys vien savo užbaigiklio sukuriamų nuorodų dėka.

 Šaltiniai 

Kategorija:Objektinis programavimas

de:Garbage Collection#Finalisierung