Javaパフォーマンス・チューニング - JVM オプション | ヒープ サイズの設定
2009/06/29 17:36Update
よくあるJavaアプリケーションのヒープ・メモリ サイズのJVMオプションの設定方法です。
Javaヒープ・メモリサイズはOSによって制限されています。
◇ 32ビットOS:1.5G~2G
◇ 64ビットOS:無制限
ヒープサイズのよくある設定例:
例:
-Xmx2048m:JVMの最大ヒープ・メモリサイズを3550Mに設定します。
-Xms2048m:JVMの起動時のヒープ・メモリのサイズを3550Mに設定します。
-Xmn768m:「NEW」領域・サイズを0.75Gに設定します。-XX:NewSize=Nオプションを置き換えます。
※ヒープサイズ=「NEW」領域・サイズ+「OLD」領域・サイズ。
※お勧め設定値はヒープサイズの3/8。
-Xss128k:各スレッドのstackサイズを設定します。JDK1.5前のバージョンでデフォルト設定値は256Kで、以降のデフォルトは1Mです。同じメモリで、該当設定値を少ないほうがより多くのスレッドを生成できます。
例:
-XX:SurvivorRatio=4 -XX:MaxPermSize=16m
-XX:NewRatio=4:NEW/OLD領域の比率。4の場合、NEW:OLD = 1:4になり、「NEW」領域はヒープサイズの1/5になります。
-XX:SurvivorRatio=4:「NEW」領域の中のEden/Survivor部分の比率。「NEW」領域サイズ=「Eden」サイズ+「Survivor」サイズ。
-XX:MaxPermSize=16m:「Permanent」領域のサイズを16Mに設定します。
※Permanent領域は、NEW領域・OLD領域とは異なる領域で、リフレクション情報を格納します。
-XX:MaxTenuringThreshold=0:「NEW」領域のオブジェクトを「OLD」領域に昇格する最大年齢を設定します。デフォルトは31で、「NEW」領域「Survivor」内に31回コピーされた時点で「OLD」領域に昇格します。
※0と設定される場合、一回のGCで、「NEW」領域の生存しているすべてのオブジェクトを (コピーするのではなく) 「OLD」領域に昇格することになります。「OLD」オブジェクトの多いアプリケーションでは、効率を向上できます。
※より大きい値が設定される場合、「NEW」領域のオブジェクトの生存期間が長くなり、「NEW」領域での回収率を向上になります。
◇ 32ビットOS:1.5G~2G
◇ 64ビットOS:無制限
ヒープサイズのよくある設定例:
例:
java -Xmx2048m -Xms2048m -Xmn768m -Xss128k
-Xmx2048m:JVMの最大ヒープ・メモリサイズを3550Mに設定します。
-Xms2048m:JVMの起動時のヒープ・メモリのサイズを3550Mに設定します。
-Xmn768m:「NEW」領域・サイズを0.75Gに設定します。-XX:NewSize=Nオプションを置き換えます。
※ヒープサイズ=「NEW」領域・サイズ+「OLD」領域・サイズ。
※お勧め設定値はヒープサイズの3/8。
-Xss128k:各スレッドのstackサイズを設定します。JDK1.5前のバージョンでデフォルト設定値は256Kで、以降のデフォルトは1Mです。同じメモリで、該当設定値を少ないほうがより多くのスレッドを生成できます。
例:
java -Xmx2048m -Xms2048m -Xmn768m -Xss128k -XX:NewRatio=4
-XX:SurvivorRatio=4 -XX:MaxPermSize=16m
-XX:NewRatio=4:NEW/OLD領域の比率。4の場合、NEW:OLD = 1:4になり、「NEW」領域はヒープサイズの1/5になります。
-XX:SurvivorRatio=4:「NEW」領域の中のEden/Survivor部分の比率。「NEW」領域サイズ=「Eden」サイズ+「Survivor」サイズ。
-XX:MaxPermSize=16m:「Permanent」領域のサイズを16Mに設定します。
※Permanent領域は、NEW領域・OLD領域とは異なる領域で、リフレクション情報を格納します。
-XX:MaxTenuringThreshold=0:「NEW」領域のオブジェクトを「OLD」領域に昇格する最大年齢を設定します。デフォルトは31で、「NEW」領域「Survivor」内に31回コピーされた時点で「OLD」領域に昇格します。
※0と設定される場合、一回のGCで、「NEW」領域の生存しているすべてのオブジェクトを (コピーするのではなく) 「OLD」領域に昇格することになります。「OLD」オブジェクトの多いアプリケーションでは、効率を向上できます。
※より大きい値が設定される場合、「NEW」領域のオブジェクトの生存期間が長くなり、「NEW」領域での回収率を向上になります。
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)