我正在监视OutOfMemoryException的spark执行器JVM。我使用Jconsole连接到执行程序JVM。以下是Jconsole的快照:
在图像中使用的内存显示为3.8G,提交的内存为8.6G,最大内存也为8.6G 任何人都可以解释使用和提交内存之间的区别或解释它的任何链接。
答案 0 :(得分:16)
来自MemoryUsage
的Java Doc,
getUsed是:
以字节为单位的已用内存量
<强> getCommitted() 强>
返回为Java提交的以字节为单位的内存量 虚拟机使用。这个数量的内存是保证的 要使用的Java虚拟机。
<强> GetMax的() 强>
返回可用于的最大内存量(以字节为单位) 内存管理。如果最大内存大小,此方法返回-1 未定义。
此内存量不保证可用于内存 管理是否大于提交的内存量。该 即使数量很大,Java虚拟机也可能无法分配内存 使用的内存不超过此最大大小。
答案 1 :(得分:0)
used memory 是当前使用的内存量(以字节为单位),而 commited memory 显示的是已提交给 JVM 使用的内存量(以字节为单位)。