提问者:小点点

JavaVisualVM是否提供正确的堆转储堆大小(. hprof文件)


我正在分析一个OutOfMemory问题。当我在MAT中打开它时,我得到了800MB(. hprof文件)的转储,它显示堆大小53.2MB如下

我在JavaVisualVM中打开的相同转储,我看到堆大小约为769MB

  Date taken: Tue Mar 18 05:25:59 IST 2014
    File: C:\Users\ABC\Desktop\Memory\MemoryDump.hprof
    File size: 789.1 MB
    Total bytes: 768,683,549
    Total classes: 9,288
    Total instances: 7,081,010
    Classloaders: 2,924
    GC roots: 2,496
    Number of objects pending for finalization: 0

我读过一篇文章,其中显示MAT跳过了无法访问的对象,因此不会报告确切的堆大小。

VisulaVM的总字节数在这里显示了什么:堆大小或(堆非堆大小)或其他任何东西?


共2个答案

匿名用户

Total Bytes是堆转储中所有对象的大小之和。

匿名用户

Eclipse MAT删除了无法访问的对象和JVM中GC留下的其他垃圾。阅读更多:

http://wiki.eclipse.org/MemoryAnalyzer/FAQ#Problems_Interpreting_Results