2011-03-17 16 views
33

Chciałbym wiedzieć, czy istnieje sposób sprawdzenia, ile odniesień ma obiekt Java. O ile mogę to sprawdzić, jedynym sposobem na to jest użycie JVMTI poprzez interfejs JNI. Czy jest dostępna czysta Java (bez użycia bibliotek rodzimych), aby uzyskać te informacje?Czy można uzyskać liczbę odwołań do obiektu?

Opracowujemy narzędzie edukacyjne do animacji struktury danych (do użytku z uczniami wdrażanie pewnych algorytmów), więc byłoby bardzo miło, gdybyśmy mogli sprawdzić "zwolnione" obiekty w najbardziej nieinwazyjny sposób (I Próbuję uniknąć zmuszania użytkownika tego narzędzia do wywołania metody takiej jak ObjectReleased (objRef) w celu zaktualizowania animacji struktury danych w celu usunięcia elementu lub czegoś podobnego)

+2

Liczby referencyjne nie są śledzone w JVM. Jedynym sposobem na poznanie jest ich policzenie. – Gabe

+1

Istnieje biblioteka, która może być używana do otrzymywania powiadomień, gdy obiekt jest zbierany śmieci. Więcej informacji można znaleźć pod tym linkiem http://sourceforge.net/projects/gcradar/ –

+0

@AmrenduPandey, nie po prostu "odważaj niektóre litery" - to nie jest odpowiedni sposób na ulepszenie pytania. Zmiany powinny być znaczne, a nie tylko formatować zmiany. – Charles

Odpowiedz

12

z twojego opisu wydaje dbasz mniej o rzeczywistej liczby referencji, niż po prostu wiedzieć, kiedy obiekt został pobrany . W takim przypadku można użyć WeakReference lub PhantomReference, aby określić, kiedy obiekt przywoływany jest gotowy do sfinalizowania.

Patrz:

Mam nadzieję, że to pomoże.

Powiązane problemy