JVMパラメータの構成方法
3826 ワード
ヒープサイズの設定
JVMの中で最も大きなサイズには、関連するオペレーティングシステムのデータモデル(32-btか64-bitか)の制限、システムの使用可能な仮想メモリの制限;システムの使用可能な物理メモリの制限.32ビットシステムでは、一般的に1.5 G~2 Gに制限される.64は、オペレーティングシステムのメモリに制限がありません.私はWindowsServer 2003システム、3.5 G物理メモリ、JDK 5にいます.0でテストし、最大1478 mに設定できます.
典型的なJVMパラメータ構成:
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k
-Xmx 3550 m:JVMの最大使用可能メモリを3550 Mに設定します.
-Xms 3550 m:JVMを設定するとメモリが3550 mになります.この値は-Xmxと同じに設定でき、ゴミ回収が完了するたびにJVMにメモリが再割り当てされないようにします.
-Xmn 2 g:若い世代のサイズを2 Gに設定します.スタック全体のサイズ=若いサイズ+古いサイズ+永続的なサイズ.永続世代は一般的に64 mと固定されているため、若い世代を大きくすると、年老いた世代の大きさが小さくなります.この値はシステムのパフォーマンスに大きな影響を及ぼし、Sunはスタック全体の3/8に構成することを推奨しています.
-Xss 128 k:各スレッドのスタックサイズを設定します.JDK5.0以降の各スレッドスタックサイズは1 Mであり、以前の各スレッドスタックサイズは256 Kであった.より適用されるスレッドに必要なメモリサイズを調整します.同じ物理メモリの下で、この値を小さくすると、より多くのスレッドが生成されます.しかし,オペレーティングシステムは1プロセス内のスレッド数に制限があり,無限に生成することはできず,経験値は3000~5000程度である.
-X:NewRatio=4:若い世代(Edenと2つのSurvivor領域を含む)と若い世代(永続世代を除く)の比を設定します.4に設定すると、若い世代と若い世代の割合は1:4で、若い世代はスタック全体の1/5を占めます.
-X:SurvivorRatio=4:若い世代のEden領域とSurvivor領域のサイズ比を設定します.4に設定すると、2つのSurvivor領域と1つのEden領域の比は2:4であり、1つのSurvivor領域は若い世代全体の1/6を占めている.
-X:MaxPermSize=16 m:永続世代サイズを16 mに設定します.
-X:MaxTenuringThreshold=0:ゴミの最大年齢を設定します.0に設定すると、若い世代の対象はSurvivor区を通らず、そのまま年老いた世代に入ります.年老いた世代の多くの応用に対して、効率を高めることができます.この値を大きな値に設定すると、若い世代のオブジェクトはSurvivor領域で複数回コピーされ、オブジェクトの再若い世代の生存時間を増加させ、若い世代で回収される概説を増加させることができます.
ごみ箱の選択
JVMは、シリアルコレクタ、パラレルコレクタ、コンカレントコレクタの3つの選択肢を与えていますが、シリアルコレクタは小さなデータ量の場合にのみ使用されるため、ここでの選択は主にパラレルコレクタとコンカレントコレクタに適用されます.デフォルトではJDK 5.0以前はシリアルコレクターを使用していましたが、他のコレクターを使用するには起動時に適切なパラメータを追加する必要があります.JDK5.0以降、JVMは現在のシステム構成に基づいて判断します.
スループット優先パラレルコレクタ
上述したように、パラレルコレクタは、主に一定のスループットを達成することを目標とし、科学技術やバックグラウンド処理などに適している.
典型的なJVMパラメータ構成:
-X:+UseParallelGC:ゴミ収集器をパラレル収集器として選択します.この構成は若い世代にのみ有効です.すなわち、上記の構成では、若い世代は同時収集を使用し、若い世代は依然としてシリアル収集を使用する.
-X:ParallelGCThreads=20:パラレルコレクタを構成するスレッドの数、すなわち、同時に複数のスレッドが一緒にゴミ回収を行う.この値は、プロセッサの数と等しいように設定することが望ましい.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:ParallelGCThreads=20-XX:+UseParallelOldGC
-X:+UseParallelOldGC:古い世代のゴミ収集方法を並列収集に設定します.JDK6.0は、高齢者の並列収集をサポートします.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:MaxGCPauseMillis=100
-X:MaxGCPauseMillis=100:若い世代のゴミを回収するための最大時間を設定します.この時間が満たされない場合、JVMはこの値を満たすために若い世代のサイズを自動的に調整します.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:MaxGCPauseMillis=100-XX:+UseAdaptiveSizePolicy
-X:+UseAdaptiveSizePolicy:このオプションを設定すると、パラレルコレクタは、ターゲットシステムが指定した最小の時間または収集頻度などを達成するために、若い世代の領域サイズと対応するSurvivor領域の割合を自動的に選択します.この値は、パラレルコレクタを使用する場合に常にオンにすることを推奨します.
レスポンスタイム優先コンカレントコレクタ
上述したように、コンカレントコレクタは、主にシステムの応答時間を保証し、ゴミ収集時の停止時間を低減する.アプリケーションサーバ、電気通信分野などに適しています.
典型的なJVMパラメータ構成:
-X:+UseConcMarkSweepGC:古い世代を同時収集に設定します.テスト中にこれを配置した後、-XX:NewRatio=4の配置が失効し、原因は不明です.したがって、このときの若い世代の大きさは-Xmnで設定することが望ましい.
-X:+UseParNewGC:若い世代をパラレル収集に設定します.CMSコレクションと併用できます.JDK5.0以上の場合、JVMはシステム構成に応じて独自に設定されるので、この値を設定する必要はありません.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection
-X:CMSFullGCsBeforeCompaction:コンカレントコレクタはメモリスペースを圧縮、整理しないため、しばらく実行すると「フラグメント」が発生し、実行効率が低下します.この値は、GCを何回実行したかを設定してメモリスペースを圧縮、整理します.
-X:+U s e CMSCompactAtFullCollection:年老いた世代への圧縮を開きます.パフォーマンスに影響を与える可能性がありますが、破片を除去できます.
JVMの中で最も大きなサイズには、関連するオペレーティングシステムのデータモデル(32-btか64-bitか)の制限、システムの使用可能な仮想メモリの制限;システムの使用可能な物理メモリの制限.32ビットシステムでは、一般的に1.5 G~2 Gに制限される.64は、オペレーティングシステムのメモリに制限がありません.私はWindowsServer 2003システム、3.5 G物理メモリ、JDK 5にいます.0でテストし、最大1478 mに設定できます.
典型的なJVMパラメータ構成:
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k
-Xmx 3550 m:JVMの最大使用可能メモリを3550 Mに設定します.
-Xms 3550 m:JVMを設定するとメモリが3550 mになります.この値は-Xmxと同じに設定でき、ゴミ回収が完了するたびにJVMにメモリが再割り当てされないようにします.
-Xmn 2 g:若い世代のサイズを2 Gに設定します.スタック全体のサイズ=若いサイズ+古いサイズ+永続的なサイズ.永続世代は一般的に64 mと固定されているため、若い世代を大きくすると、年老いた世代の大きさが小さくなります.この値はシステムのパフォーマンスに大きな影響を及ぼし、Sunはスタック全体の3/8に構成することを推奨しています.
-Xss 128 k:各スレッドのスタックサイズを設定します.JDK5.0以降の各スレッドスタックサイズは1 Mであり、以前の各スレッドスタックサイズは256 Kであった.より適用されるスレッドに必要なメモリサイズを調整します.同じ物理メモリの下で、この値を小さくすると、より多くのスレッドが生成されます.しかし,オペレーティングシステムは1プロセス内のスレッド数に制限があり,無限に生成することはできず,経験値は3000~5000程度である.
java-Xmx3550m-Xms3550m-Xss128k
-XX:NewRatio=4-XX:SurvivorRatio=4
-XX:MaxPermSize=16m-XX:MaxTenuringThreshold=0
-X:NewRatio=4:若い世代(Edenと2つのSurvivor領域を含む)と若い世代(永続世代を除く)の比を設定します.4に設定すると、若い世代と若い世代の割合は1:4で、若い世代はスタック全体の1/5を占めます.
-X:SurvivorRatio=4:若い世代のEden領域とSurvivor領域のサイズ比を設定します.4に設定すると、2つのSurvivor領域と1つのEden領域の比は2:4であり、1つのSurvivor領域は若い世代全体の1/6を占めている.
-X:MaxPermSize=16 m:永続世代サイズを16 mに設定します.
-X:MaxTenuringThreshold=0:ゴミの最大年齢を設定します.0に設定すると、若い世代の対象はSurvivor区を通らず、そのまま年老いた世代に入ります.年老いた世代の多くの応用に対して、効率を高めることができます.この値を大きな値に設定すると、若い世代のオブジェクトはSurvivor領域で複数回コピーされ、オブジェクトの再若い世代の生存時間を増加させ、若い世代で回収される概説を増加させることができます.
ごみ箱の選択
JVMは、シリアルコレクタ、パラレルコレクタ、コンカレントコレクタの3つの選択肢を与えていますが、シリアルコレクタは小さなデータ量の場合にのみ使用されるため、ここでの選択は主にパラレルコレクタとコンカレントコレクタに適用されます.デフォルトではJDK 5.0以前はシリアルコレクターを使用していましたが、他のコレクターを使用するには起動時に適切なパラメータを追加する必要があります.JDK5.0以降、JVMは現在のシステム構成に基づいて判断します.
スループット優先パラレルコレクタ
上述したように、パラレルコレクタは、主に一定のスループットを達成することを目標とし、科学技術やバックグラウンド処理などに適している.
典型的なJVMパラメータ構成:
java-Xmx3800m-Xms3800m-Xmn2g-Xss128k
-XX:+UseParallelGC-XX:ParallelGCThreads=20
-X:+UseParallelGC:ゴミ収集器をパラレル収集器として選択します.この構成は若い世代にのみ有効です.すなわち、上記の構成では、若い世代は同時収集を使用し、若い世代は依然としてシリアル収集を使用する.
-X:ParallelGCThreads=20:パラレルコレクタを構成するスレッドの数、すなわち、同時に複数のスレッドが一緒にゴミ回収を行う.この値は、プロセッサの数と等しいように設定することが望ましい.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:ParallelGCThreads=20-XX:+UseParallelOldGC
-X:+UseParallelOldGC:古い世代のゴミ収集方法を並列収集に設定します.JDK6.0は、高齢者の並列収集をサポートします.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:MaxGCPauseMillis=100
-X:MaxGCPauseMillis=100:若い世代のゴミを回収するための最大時間を設定します.この時間が満たされない場合、JVMはこの値を満たすために若い世代のサイズを自動的に調整します.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:MaxGCPauseMillis=100-XX:+UseAdaptiveSizePolicy
-X:+UseAdaptiveSizePolicy:このオプションを設定すると、パラレルコレクタは、ターゲットシステムが指定した最小の時間または収集頻度などを達成するために、若い世代の領域サイズと対応するSurvivor領域の割合を自動的に選択します.この値は、パラレルコレクタを使用する場合に常にオンにすることを推奨します.
レスポンスタイム優先コンカレントコレクタ
上述したように、コンカレントコレクタは、主にシステムの応答時間を保証し、ゴミ収集時の停止時間を低減する.アプリケーションサーバ、電気通信分野などに適しています.
典型的なJVMパラメータ構成:
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k
-XX:ParallelGCThreads=20
-XX:+UseConcMarkSweepGC-XX:+UseParNewGC
-X:+UseConcMarkSweepGC:古い世代を同時収集に設定します.テスト中にこれを配置した後、-XX:NewRatio=4の配置が失効し、原因は不明です.したがって、このときの若い世代の大きさは-Xmnで設定することが望ましい.
-X:+UseParNewGC:若い世代をパラレル収集に設定します.CMSコレクションと併用できます.JDK5.0以上の場合、JVMはシステム構成に応じて独自に設定されるので、この値を設定する必要はありません.
java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection
-X:CMSFullGCsBeforeCompaction:コンカレントコレクタはメモリスペースを圧縮、整理しないため、しばらく実行すると「フラグメント」が発生し、実行効率が低下します.この値は、GCを何回実行したかを設定してメモリスペースを圧縮、整理します.
-X:+U s e CMSCompactAtFullCollection:年老いた世代への圧縮を開きます.パフォーマンスに影響を与える可能性がありますが、破片を除去できます.