Obsah:
Definice - Co znamená Finalize?
Finalizace je metoda objektu, která obsahuje kód požadovaný k uvolnění nespravovaných prostředků a provádění operací čištění před sběrem odpadu (GC).
Metoda finalizace se používá k vyčištění prostředků, které nejsou spravovány .NET. Ačkoli framework .NET je navržen tak, aby uvolňoval spravované prostředky implicitním prováděním úkolů správy paměti, musí být explicitně uvolněny nespravované aplikační prostředky - jako jsou popisky souborů a připojení k databázi -.
Techopedia vysvětluje dokončení
Zatímco finalizace je navržena tak, aby byla implicitně volána GC, metoda likvidace může být explicitně volána uživatelským kódem k uvolnění zdrojů.
Finalizace je podobná tradičním destruktorům C ++, protože každý je zodpovědný za uvolnění prostředků objektů. Destruktory C ++ se provádějí okamžitě, když objekt zmizí z rozsahu, zatímco finalizace se nazývá během čištění objektu v GC. V C # nelze finalizaci přímo volat ani přepsat. Pokud je deklator deklarován, je při kompilaci programu převeden na metodu finalizace.
Během finalizace je třeba se vyhnout přidělování paměti nebo volání virtuálních metod. Rozsah finalizace by měl být chráněn tak, aby byl přístupný pouze v rámci stejné třídy nebo její odvozené třídy. Finalizace by neměla odkazovat na žádné jiné objekty. V C # je volání finalizace přímo na jiný objekt, než je jeho základní třída, neplatná operace. Finalizační kód by měl být minimální bez jakýchkoli volání schopných blokovat volající vlákno. Protože finalizace se nazývá vyhrazené vlákno, jeho kód by neměl používat lokální úložiště vlákna ani žádnou techniku vyžadující afinitu vlákna.
Použití finalizace jako záložního mechanismu pro uvolnění nespravované paměti nebo zdrojů je nezbytné kvůli nedostatku determinismu a účinkům na výkon GC.
