最近,当我的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.