我想知道是否有辦法檢查一個Java對象有多少個引用。至於我可以檢查唯一的方法是通過JNI接口使用JVMTI。是否有純Java(不使用本機庫)解決方案來獲取此信息?是否可以獲取對象引用計數?
我們正在開發一個數據結構動畫的教育工具(與學生實現某些算法一起使用),所以如果我們能夠以最不干擾的方式檢查「已發佈」對象將是非常好的(我試圖避免強制這個工具的用戶調用諸如ObjectReleased(objRef)之類的方法來更新元素移除的數據結構動畫或類似的東西)
我想知道是否有辦法檢查一個Java對象有多少個引用。至於我可以檢查唯一的方法是通過JNI接口使用JVMTI。是否有純Java(不使用本機庫)解決方案來獲取此信息?是否可以獲取對象引用計數?
我們正在開發一個數據結構動畫的教育工具(與學生實現某些算法一起使用),所以如果我們能夠以最不干擾的方式檢查「已發佈」對象將是非常好的(我試圖避免強制這個工具的用戶調用諸如ObjectReleased(objRef)之類的方法來更新元素移除的數據結構動畫或類似的東西)
Java本身不提供此選項據我所知。
在這裏,您對如何做手工一些指導:
從你的描述,看來你不太關心,而不是簡單地知道一個對象已被收集時引用的實際計數。如果是這種情況,可以使用WeakReference或PhantomReference來確定引用對象何時準備好完成。
參見:
希望這有助於。
引用計數不在JVM中進行跟蹤。要知道的唯一方法就是數它們。 – Gabe
有一個庫可用於在垃圾收集對象時獲取通知。請參閱此鏈接獲取更多詳細信息http://sourceforge.net/projects/gcradar/ –
@AmrenduPandey,不要簡單地「大膽地寫一些字母」 - 這不是一個改進問題的適當方法。編輯應該是實質性的,而不僅僅是格式變化。 – Charles