使用,提交和最大堆内存的差异

时间:2017-01-04 16:25:22

标签: java apache-spark memory-management jvm spark-streaming

我正在监视OutOfMemoryException的spark执行器JVM。我使用Jconsole连接到执行程序JVM。以下是Jconsole的快照: enter image description here

在图像中使用的内存显示为3.8G,提交的内存为8.6G,最大内存也为8.6G 任何人都可以解释使用和提交内存之间的区别或解释它的任何链接。

2 个答案:

答案 0 :(得分:16)

来自MemoryUsage的Java Doc,

getUsed是:

  

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

<强> getCommitted()

  

返回为Java提交的以字节为单位的内存量   虚拟机使用。这个数量的内存是保证的   要使用的Java虚拟机。

<强> GetMax的()

  

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

     

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

答案 1 :(得分:0)

used memory 是当前使用的内存量(以字节为单位),而 commited memory 显示的是已提交给 JVM 使用的内存量(以字节为单位)。