2017-01-04 81 views
14

私はOutOfMemoryExceptionのスパークエグゼキュータJVMを監視しています。私はJconsoleを使用してExecutor JVMに接続しました。画像に使用されるメモリで enter image description here使用済み、コミット済みおよび最大ヒープメモリの相違

3.8gのとして示され、コミットされたメモリは、8.6gので、最大メモリはまた、誰もが使用され、コミットされたメモリまたは任意のリンクの違いを説明してもらえ を8.6gのされている:JConsoleののスナップショットは、次のとおりそれはそれを説明します。 MemoryUsageのJavaのドキュメントから

+5

https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryUsage.html [の – stark

+3

可能な重複なぜLinuxのプロセスに常駐よりもJVMのレポートよりコミットされたメモリセットサイズ?](http://stackoverflow.com/questions/31173374/why-does-a-jvm-report-more-committed-memory-than-the-linux-process-resident-set) – the8472

答えて

3

getUsedである:

バイトで使用するメモリの量

getCommitted()

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

getMax()で メモリ管理のために使用することができるバイトのメモリの最大量を返し

。最大メモリサイズ が未定義の場合、このメソッドは-1を返します。

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

関連する問題