已用、已提交和最大堆内存的差异

新手上路,请多包涵

我正在监视 OutOfMemoryException 的 spark 执行程序 JVM。我使用 Jconsole 连接到执行程序 JVM。以下是 Jconsole 的快照: 在此处输入图像描述

在图像中,已用内存显示为 3.8G,已提交内存为 8.6G,最大内存也是 8.6G 谁能解释已用内存和已提交内存之间的区别或任何解释它的链接。

原文由 Alok 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
1 个回答

来自 MemoryUsage 的 Java Doc,

getUsed 是:

以字节为单位的已用内存量

getCommitted()

返回提交给 Java 虚拟机使用的内存量(以字节为单位)。此内存量保证供 Java 虚拟机使用。

获取最大值()

返回可用于内存管理的最大内存量(以字节为单位)。如果未定义最大内存大小,则此方法返回 -1。

如果该内存量大于已提交的内存量,则不能保证该内存量可用于内存管理。即使使用的内存量不超过此最大大小,Java 虚拟机也可能无法分配内存。

原文由 Somnath Musib 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题