java - 我如何从堆转储中知道一个 Java 对象是在 tenure 空间还是 eden 空间

标签 java garbage-collection jvm-hotspot heap-dump

我有一个 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/

相关文章:

java - 设计一个主题工厂

javascript - 蜘蛛猴和垃圾收集

jvm - 在运行时更改 JVM JIT 选项

java - 在 spring-data-neo4j 中使用 @Transactional 时出现问题

java - Spring 中具有多个事务管理器的多个数据源

android - 如何让 Android 在我不需要之前不回收我的位图?

java - Android 应用程序 Wi-Fi 设备 - AP 连接

java - JVM 能否优化引用 null(null 类型的实例)所需的内存?

java - 获取第一个元素并在应用函数后返回

c# - GC.KeepAlive() 和 System.Timers.Timer