3

アプリケーションをCMSコレクターに切り替えたところ、アプリケーションのスループットが半分に低下しました。GCログから、マイナーGCが頻繁に発生していることがわかります(aroung 10 per second)。ヒープサイズをに割り当てました4G。デフォルトのJVMは、若い世代に非常に小さいサイズ(未満40MB)を使用しています。若い世代のサイズを増やしてCMSを試してみたいです。このための正しいJVMパラメータを教えていただけますか。

  • -XX:NewRatioを試しましたが、JVMはこのパラメーターを無視し、若い世代のサイズに変更はありませんでした
  • 私のJavaバージョンはjava version "1.6.0_14"
4

2 に答える 2

5

をどのように設定-XX:NewRatioし、どの JVM バージョンで使用しましたか?

ともかく。-XX:MaxNewSize=size機能である も設定している場合、または既知のバグ-XX:+UseConcMarkSweepGCであるも設定している場合は無視できます。

于 2012-06-15T07:12:27.117 に答える
1

わたしにはできる:

デフォルト (Windows 上の Java 7 64 ビット):

java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version 
Java バージョン"1.7.0_07"
Java(TM) SE ランタイム環境 (ビルド 1.7.0_07-b10)
Java HotSpot(TM) 64 ビット サーバー VM (ビルド 23.3-b01、混合モード)
ヒープ
 新世代合計613440K、中古21813K
  eden スペース 545344K、4% 使用済み
  スペース 68096K から、0% 使用
  スペース 68096K まで、使用率 0%
 同時マークスイープ生成合計3512768K、使用 0K
 並行マークスイープ perm gen 合計 21248K、使用済み 2084K

ここで比率パラメータを指定します (ほぼ同じ結果):

java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=6 -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
 新世代計539264K、中古19174K
  eden スペース 479360K、4% 使用済み
  スペース 59904K から、0% 使用
  スペース 59904K まで、使用率 0%
 同時マークスイープ生成合計3595136K、使用 0K
 並行マークスイープ perm gen 合計 21248K、使用済み 2084K

そして、まったく異なる新しい/古い比率とエデン/サバイバー比率:

java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
 新世代合計1398144K、中古27965K
  eden スペース 699136K、4% 使用済み
  スペース 699008K から、0% 使用
  スペース 699008K まで、0% 使用済み
 同時マークスイープ生成合計2097152K、使用 0K
 並行マークスイープ perm gen 合計 21248K、使用済み 2084K

Java 6 またはクライアント VM でも同じように機能します (デフォルトが異なるだけです)。

于 2012-09-26T00:21:33.923 に答える