OutOfMemoryExceptionのspark executor JVMを監視しています。Jconsoleを使用してexecutor JVMに接続します。以下はJconsoleのスナップショットです。
画像では、使用済みメモリは3.8G、コミット済みメモリは8.6G、最大メモリは8.6Gと表示されています。使用済みメモリとコミット済みメモリの違い、またはそれを説明するリンクについて説明してください。
Java Doc of MemoryUsage
から、
getUsed is:
バイト単位の使用済みメモリ量
getCommitted()
Java仮想マシンが使用するためにコミットされるメモリの量をバイト単位で返します。このメモリ量は、Java仮想マシンが使用するために保証されます。
getMax()
メモリ管理に使用できるメモリの最大量をバイト単位で返します。最大メモリサイズが未定義の場合、このメソッドは-1を返します。
このメモリの量は、コミットされたメモリの量よりも大きい場合、メモリ管理に使用できることが保証されていません。 Java仮想マシンは、使用されるメモリの量がこの最大サイズを超えていなくても、メモリの割り当てに失敗する場合があります。