我正在使用-Xmx512m
,在内存不足错误后,我收到了堆转储。将此堆转储加载到JAVA时,VisualVM显示的堆大小超过1 GB。
当我的-Xmx
值为512 MB时,无法理解堆大小如何增长到1 GB。
修改
我查看了另一个question,这个问题被标记为重复,我得到了一部分答案:JVM还有非堆内存和其他内存部分(如下图所示)
但仍有一个问题。有什么办法可以从堆转储中识别出只有堆内存的大小吗?
答案 0 :(得分:0)
Java堆不会扩展到指定的-Xmx。在JVM初始化时完成堆分配,因此在运行时期间无法进行堆扩展。要获得更多确认,请添加-verbose:gc jvm参数来收集GC占用率,检查日志的最后一个周期,以验证应用程序的可用空间和分配空间。
答案 1 :(得分:-2)
我认为这可能会对你有所帮助
<强> https://www.eclipse.org/mat/ 强>
我不确定它是否可以从堆转储中打开堆内存,但值得尝试
修改强>
您可以使用JConsole
它显示了您要找的内容