Naprawdę nie można tego zrobić w Javie. Wszystkie odpowiedzi, które mówią o finalizatorach, naprawdę nie są tym, na co masz ochotę.
Najlepsze, co możesz zrobić, to zakodować PhantomReference w sondzie ReferenceQueue i poll, dopóki nie uzyskasz referencji.
final ReferenceQueue rq = new ReferenceQueue();
final PhantomReference phantom = new PhantomReference(referenceToObjectYouWantToTrack, rq);
Chcesz przeczytać odpowiedź Petera Koflera tutaj (to wyjaśnia, co PhantomReference jest):
Have you ever used Phantom reference in any project?
Bardzo ciekawy przeczytać tutaj:
http://www.kdgregory.com/index.php?page=java.refobj
Zasadniczo "Używam PhantomReference w projekcie, w którym jeden specjalny rodzaj pamięci podręcznej musi zostać obliczony jeden raz, kiedy oprogramowanie zostało zainstalowane. Aby skutecznie obliczyć pamięć podręczną (dyskową), potrzebna jest gigantyczna ilość pamięci (im więcej, tym lepiej). Używam PhantomReference do śledzenia "prawie dokładnie" kiedy ta gigantyczna ilość pamięci zostanie zwolniona.
(FWIW, to zwykle jest słuchacz). –
Myślałem, że to możliwe, ale starałem się usunąć wszystkie actionListeners i componentListeners – Shizam