1. 概要

この短い記事では、JVMのさまざまなメモリサイズメトリックの違いを確認します。

最初に、アダプティブサイジングがどのように機能するかについて説明し、次に、最大サイズ、使用済みサイズ、およびコミット済みサイズの違いを評価します。

2. 最大サイズとアダプティブサイジング

2つの値がJVMヒープのサイズを制御します 1つは-Xmsフラグで指定された初期値で、もう1つは-Xmxチューニングフラグで制御された最大値です。

これらのフラグを指定しない場合、JVMはそれらのデフォルト値を選択します。 これらのデフォルト値は、基盤となるOS、使用可能なRAMの量、そしてもちろん、JVM実装自体によって異なります。

 

実際のサイズとデフォルト値に関係なく、ヒープサイズは初期サイズから始まります。 より多くのオブジェクトを割り当てると、それに対応するためにヒープサイズが大きくなる可能性があります。 ただし、ヒープサイズは最大ヒープサイズを超えることはできません。

簡単に言えば、 最大ヒープサイズは、-Xmxフラグで指定されたサイズです。 また、-Xmxを明示的に指定しない場合、JVMはデフォルトの最大サイズを計算します

3. 使用サイズ

ここで、プログラムの開始以降にいくつかのオブジェクトを割り当てたとしましょう。 ヒープサイズは、新しいオブジェクトに対応するために少し大きくなる可能性があります。

使用済みスペースは、Javaオブジェクトによって現在占有されているメモリの量です。 常に最大サイズ以下です。

4. コミットサイズ

コミットされたサイズは、Java仮想マシンで使用できることが保証されているメモリの量です。 コミットされたメモリサイズは、常に使用サイズ以上です。

5. 結論

この短い記事では、最大ヒープサイズ、使用済みヒープサイズ、およびコミット済みヒープサイズの違いを確認しました。