从堆转储文件中识别堆内存的大小?

时间:2014-04-24 10:51:05

标签: java jvm heap-memory visualvm

我正在使用-Xmx512m,在内存不足错误后,我收到了堆转储。将此堆转储加载到JAVA时,VisualVM显示的堆大小超过1 GB。

当我的-Xmx值为512 MB时,无法理解堆大小如何增长到1 GB。

VisualVM Screen shot

修改

我查看了另一个question,这个问题被标记为重复,我得到了一部分答案:JVM还有非堆内存和其他内存部分(如下图所示)

JVM Memory Parts

但仍有一个问题。有什么办法可以从堆转储中识别出只有堆内存的大小吗?

2 个答案:

答案 0 :(得分:0)

Java堆不会扩展到指定的-Xmx。在JVM初始化时完成堆分配,因此在运行时期间无法进行堆扩展。要获得更多确认,请添加-verbose:gc jvm参数来收集GC占用率,检查日志的最后一个周期,以验证应用程序的可用空间和分配空间。

答案 1 :(得分:-2)

我认为这可能会对你有所帮助

<强> https://www.eclipse.org/mat/

我不确定它是否可以从堆转储中打开堆内存,但值得尝试

修改

您可以使用JConsole enter image description here

它显示了您要找的内容