Inhoudsopgave:
Definitie - Wat betekent Finalize?
Finaliseren is een objectmethode die de code bevat die vereist is om onbeheerde bronnen vrij te maken en opschoningsbewerkingen uit te voeren voorafgaand aan garbage collection (GC).
De laatste methode wordt gebruikt om bronnen op te schonen die niet door .NET worden beheerd. Hoewel het .NET-framework is ontworpen om beheerde bronnen vrij te geven door impliciet geheugenbeheertaken uit te voeren, moeten niet-beheerde toepassingsbronnen - zoals bestandshandles en databaseverbindingen - expliciet worden vrijgegeven.
Techopedia legt Finalize uit
Hoewel finalize is ontworpen om impliciet door GC te worden aangeroepen, kan de verwijderingsmethode expliciet door gebruikerscode worden aangeroepen om bronnen vrij te maken.
Finalize is vergelijkbaar met traditionele C ++ destructors, omdat elk verantwoordelijk is voor het vrijmaken van objectbronnen. C ++ destructors worden onmiddellijk uitgevoerd wanneer een object buiten bereik valt, terwijl finaliseren wordt aangeroepen tijdens objectopruiming op GC. In C # kan finalize niet direct worden aangeroepen of genegeerd. Als een destructor wordt gedeclareerd, wordt deze geconverteerd naar de laatste methode wanneer het programma wordt gecompileerd.
Tijdens het finaliseren moet geheugentoewijzing of het aanroepen van virtuele methoden worden vermeden. Het bereik van finalize moet worden beschermd, zodat het alleen toegankelijk is binnen dezelfde klasse of de afgeleide klasse. Finalize mag niet verwijzen naar andere objecten. In C # is het aanroepen van finalize rechtstreeks op een ander object dan de basisklasse een ongeldige bewerking. De afrondingscode moet minimaal zijn zonder oproepen die de oproepthread kunnen blokkeren. Omdat finalize door een specifieke thread wordt aangeroepen, mag de code geen lokale opslag van threads of een andere techniek gebruiken waarvoor threadaffiniteit vereist is.
Het is essentieel om finalize te gebruiken als een fallback-mechanisme voor het vrijgeven van onbeheerd geheugen of bronnen, vanwege gebrek aan determinisme en effecten op de GC-prestaties.