Mam klasę Java, która używa złożonych pól statycznych, które wymagają specjalnych operacji jako close()
, dzięki czemu są bezpiecznie czyszczone przez GC.Rozładuj pola statyczne
Do inicjalizacji pól statycznych używam bloku static
. Ale nie wiem teraz, jak bezpiecznie rozładować pole statyczne, aby móc wywołać metodę close()
zanim pole zostanie oczyszczone przez GC.
Czy istnieje sposób na wyładowanie pola statycznego, podobnie do bloku inicjalizacji statycznej?
Czy rozważałeś użycie funkcji finalize()? –
Mam. Ale z tego, co wiem, sfinalizowanie działa na obiektach klasy, a nie na polach statycznych z tej klasy. Więc sfinalizowanie nie jest dla mnie opcją. –
Może za pomocą statycznego pola zawierającego liczbę aktywnych odwołań do obiektów tej klasy (inkrementowanego w konstruktorze, zmniejszonego w finalize()) ORAZ wywołującego close() lub jakichkolwiek metod czyszczenia, które masz na "złożonej" statyce po sfinalizowaniu () napotyka liczbę ref zera po zmniejszeniu - nie próbowałem tego. –