【发布时间】:2010-03-13 06:24:19
【问题描述】:
我正在编写一个小代码来检测在我们的工具中执行某些操作后留下的对象数量。这使用来自 JVMTI API 的FollowReferences()。这会计算所有路径可到达的实例。如何跳过包含弱/软/幻像引用的路径?
(IterateThroughHeap()目前统计所有对象,所以这个数字并不完全可靠。)
【问题讨论】:
标签: java memory-leaks memory-management jvmti
我正在编写一个小代码来检测在我们的工具中执行某些操作后留下的对象数量。这使用来自 JVMTI API 的FollowReferences()。这会计算所有路径可到达的实例。如何跳过包含弱/软/幻像引用的路径?
(IterateThroughHeap()目前统计所有对象,所以这个数字并不完全可靠。)
【问题讨论】:
标签: java memory-leaks memory-management jvmti
解决方案(目前)是将FindClass 用于java/lang/ref/Reference,然后将其标记为跳过。在FollowReference的回调中,当class被标记为跳过时跳过迭代。
(真正的解决方案可能是使用随 Sun JDK 一起提供的 hprof 代码。)
【讨论】: