2011-12-20 22 views
11

Tôi có vùng chứa JVM Hotspot và tôi đã cố gắng tìm hiểu xem một đối tượng có đang sống trong không gian chiếm hữu, không gian eden hoặc không gian sống sót hay không Tôi không thể.Làm cách nào để biết một đối tượng Java có trong không gian chiếm hoặc không gian từ vùng chứa đống

Đánh giá cao nếu ai đó có thể giúp tôi.

+0

Bạn đang cố gắng giải quyết vấn đề gì bạn cần biết điều này? –

Trả lời

7

Tôi không nghĩ bạn có thể. Từ this bài diễn đàn,

xin lỗi, tin xấu, các đống đổ không chứa các thông tin về không gian đối tượng là trong

Nhìn vào nội dung của heap java bãi từ page này có vẻ để xác nhận rằng vùng chứa heap không chứa thông tin thế hệ,

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, [email protected]) 
    name  50000116 
    group  50008c6c 
    contextClassLoader 50008c53 
    inheritedAccessControlContext 50008c79 
    blockerLock 50000115 
OBJ 50008c6c (sz=48, trace=300000, [email protected]) 
    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 
+3

+1: Nếu bạn lấy một 'jmap -dump: live', bạn có thể chắc chắn không có gì trong không gian eden vì nó thực hiện một GC để xác định đối tượng nào đang hoạt động. –

+0

Bạn có thể ít nhất phải phân biệt PermGen với phần còn lại không? – Thilo

+0

@PeterLawrey cũng sẽ quét không gian đã thuê? Cám ơn! –