9.18.3 注意事項
-
この機能を有効にすることによって,Javaアプリケーション実行時のJavaヒープ領域とExplicitヒープ領域の使用量が減少し,その変化量はJavaアプリケーションに依存します。もし,この機能を有効にしたことによるメモリ使用量の変化を問題視する場合は,この機能をOFFにしてください。
-
この機能を有効にすることによって,Javaアプリケーション実行時のスループットなどの実行性能に影響を与える場合があるのでご注意ください。この機能が実行性能に影響する点は,次の2点です。
(a)JavaVMが扱うデータ(Javaオブジェクト)サイズが減少し,より効率的なメモリアクセスができる(性能向上要因)
(b)JavaVMがJavaオブジェクトのサイズを圧縮するための計算が必要となる(性能低下要因)
(a)(b)の2点の要因から,この機能有効時JavaVM実行時の性能が変化することになります。また(b)については,JavaVM起動時のOS環境の違いによって,計算方法(詳細は次の(補足))も変化し実行性能に影響します。もし,この機能を有効にしたことによる性能の変化を問題視する場合は,この機能をOFFにしてください。
- (補足) Javaオブジェクトのサイズの圧縮について
-
圧縮オブジェクトポインタ機能有効時,JavaVMはJavaオブジェクトのサイズを圧縮して管理しますが,その圧縮方法(以降,モードと呼びます)は複数存在します。JavaVMは起動時に,その実行環境状況によってどのモードを選択するかを決定します。以降,JavaVMは起動時に選択したモードを適用して,Javaオブジェクトのサイズを圧縮します。
どのモードを選択するかの条件は,次の2つとなります。
1.Javaヒープ領域とExplicitヒープ領域サイズの指定合計値
2. 1.のヒープ領域が仮想アドレス空間のどこに割り当てられるか
そのため,JavaVM起動時のヒープ領域サイズの指定値を変更した場合,または,同一OS上で動作しているほかのプロセスやライブラリのロード状況によっては,JavaVM起動ごとに異なるモードが適用されます。
どのモードが選択されるかは,実際にヒープ領域が仮想メモリ空間上のどこに割り当てられるかに依存するため,特定の圧縮モードが常に適用されるようにこの機能を有効とすることは困難です。この機能を無効・有効とした場合だけ性能の差異がでるだけでなく,この機能を有効とした場合も,JavaVMの起動ごとに性能の差異が発生する場合もあることにご注意ください。
参考として圧縮オブジェクトポインタ機能有効時にJavaVMが選択できる各モードについて,選択条件と圧縮方法の概要を次の表※1※2に示します。
表9‒25 圧縮オブジェクトポインタ機能のモード一覧 選択条件
概要説明
モード1
各ヒープ領域(Javaヒープ領域とExplicitヒープ領域※3)の総サイズが4GB未満であり,仮想アドレス空間上,全ヒープ領域が4GBよりも低位側に存在する場合
最も簡単な計算方法で,Javaオブジェクトのサイズを圧縮します。
モード2
モード1の適用ができないで,仮想アドレス空間上,その全ヒープ領域が32GBよりも低位側に存在する場合
モード1の次に簡単な計算方法によりJavaオブジェクトのサイズを圧縮します。
モード3
モード1とモード2が適用できなかった場合
これらモードのうち,最も複雑な方法でJavaオブジェクトの圧縮をします。