我有一个 Hotspot JVM 堆转储,我试图找出某个对象是否存在于保有空间、伊甸园空间或幸存者空间中,但我做不到。
如果有人能帮助我,我将不胜感激。
最佳答案
我认为你做不到。来自 this 论坛帖子,
sorry, bad news, the heap dump neither contains the info about the space the object is in
从这个 page 查看 java 堆转储的内容似乎可以确认堆转储不包含生成信息,
HEAP DUMP BEGIN (39793 objects, 2628264 bytes) Wed Oct 4 13:54:03 2006
ROOT 50000114 (kind=<thread>, id=200002, trace=300000)
ROOT 50000006 (kind=<JNI global ref>, id=8, trace=300000)
ROOT 50008c6f (kind=<Java stack>, thread=200000, frame=5)
:
CLS 50000006 (name=java.lang.annotation.Annotation, trace=300000)
loader 90000001
OBJ 50000114 (sz=96, trace=300001, class=java.lang.Thread@50000106)
name 50000116
group 50008c6c
contextClassLoader 50008c53
inheritedAccessControlContext 50008c79
blockerLock 50000115
OBJ 50008c6c (sz=48, trace=300000, class=java.lang.ThreadGroup@50000068)
name 50008c7d
threads 50008c7c
groups 50008c7b
ARR 50008c6f (sz=16, trace=300000, nelems=1,
elem type=java.lang.String[]@5000008e)
[0] 500007a5
CLS 5000008e (name=java.lang.String[], trace=300000)
super 50000012
loader 90000001
关于java - 我如何从堆转储中知道一个 Java 对象是在 tenure 空间还是 eden 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8571145/