最近,当我的jboss服务器以4096m的xms和4096m的xmx和permsize的512m运行时,我以hprof格式制作了一个heapdump。

生成的hprof文件超过5GB。当我在visualvm,mat分析器或yourkit中加载heapdump时,我只会看到大约1gb的总字节。我试过更改yourkit中的可达性范围,但显示的范围不超过1 GB。

知道文件大小与显示的堆转储大小之间的巨大差异会导致什么吗?

ps:我正在使用jdk1.6.0_23

不幸的是,我不允许在这里提交屏幕截图。

在文件系统上,hprof大小为5.227.659 kb,在yourkit中它指出:

对象:9.738.282 /浅尺寸740 mb /保留尺寸:740 mb其中可到达的字符串:6.652.515(68%)/浅尺寸:381 mb(51%)/保留尺寸:381 MB(51%)

保留的最大大小为206.810.176的byte []。

最佳答案

您使用了哪个命令来生成堆转储?

$JAVA_HOME/bin/jmap -dump:live,format=b,file=c:/tmp/heap_dump.bin PID

根据规范,也许您需要传递实时选项
 -dump:<dump-options> to dump java heap in hprof binary format
                   dump-options:
                     live         dump only live objects; if not specified,
                                  all objects in the heap are dumped.

07-24 09:47
查看更多