最近,当我的 jboss 服务器运行 xms 为 4096m、xmx 为 4096m、permsize 为 512m 时,我以 hprof 格式进行了堆转储。
生成的hprof文件超过5GB。当我在 VisualVM、Mat 分析器或 yourkit 中加载堆转储时,我只看到大约 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%)
最大保留大小是 byte[] 206.810.176
您使用哪个命令来生成堆转储?
$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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)