web-dev-qa-db-ja.com

使用済みメモリ、コミット済みメモリ、最大ヒープメモリの違い

OutOfMemoryExceptionのspark executor JVMを監視しています。Jconsoleを使用してexecutor JVMに接続します。以下はJconsoleのスナップショットです。 enter image description here

画像では、使用済みメモリは3.8G、コミット済みメモリは8.6G、最大メモリは8.6Gと表示されています。使用済みメモリとコミット済みメモリの違い、またはそれを説明するリンクについて説明してください。

30
Alok

Java Doc of MemoryUsage から、

getUsed is:

バイト単位の使用済みメモリ量

getCommitted()

Java仮想マシンが使用するためにコミットされるメモリの量をバイト単位で返します。このメモリ量は、Java仮想マシンが使用するために保証されます。

getMax()

メモリ管理に使用できるメモリの最大量をバイト単位で返します。最大メモリサイズが未定義の場合、このメソッドは-1を返します。

このメモリの量は、コミットされたメモリの量よりも大きい場合、メモリ管理に使用できることが保証されていません。 Java仮想マシンは、使用されるメモリの量がこの最大サイズを超えていなくても、メモリの割り当てに失敗する場合があります。

17
Somnath Musib