【问题标题】:Identify size of heap memory from a heap dump file?从堆转储文件中识别堆内存的大小?
【发布时间】:2014-06-09 14:43:36
【问题描述】:

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

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

编辑

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

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

【问题讨论】:

  • 你只看文件大小吗?
  • @nos 不,我正在查看总字节数。
  • @nos 我只想知道堆大小
  • 我们已经编辑了这个问题,这不再是一个重复的问题。
  • 我可以让你的堆转储来调查发生了什么吗?

标签: java jvm heap-memory visualvm


【解决方案1】:

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

【讨论】:

【解决方案2】:

我想这对你有帮助

https://www.eclipse.org/mat/

我不确定它是否只能从堆转储中打开堆内存,但值得一试

编辑

您可以使用 JConsole

它显示了你在寻找什么

【讨论】:

  • 使用 Jconsole 我可以识别正在运行的 java 进程的堆使用情况,但我想从堆转储中识别堆使用情况。
猜你喜欢
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2012-09-23
  • 2012-06-22
  • 1970-01-01
相关资源
最近更新 更多