How can I know whether a Java object is in tenure or eden space from heap dump
Asked Answered
T

1

12

I have a Hotspot JVM heap dump and I tried to find out whether an object is live in tenure space, eden space, or survivor space, but I could not.

Appreciate if someone can help me.

Tripper answered 20/12, 2011 at 5:21 Comment(1)
What problem are you trying to solve that you need to know this?Fluor
P
9

I don't think you can. From this forum post,

sorry, bad news, the heap dump neither contains the info about the space the object is in

Looking at the contents of the java heap dumps from this page seems to confirm that the heap dump does not contain generation info,

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
Protein answered 20/12, 2011 at 6:21 Comment(3)
+1: If you take a jmap -dump:live you can be sure nothing is in the eden space as it performs a GC to determine which objects are live.Fluor
Can you at least tell apart PermGen from the rest?Wilburnwilburt
@PeterLawrey will that sweep the tenured space too? Thx!Bandler

© 2022 - 2024 — McMap. All rights reserved.