17

次のメモリオプションを設定しています。

export MEM_OPTS="-Xmx2560m -Xms2560m -XX:NewSize=786m -XX:MaxNewSize=786m -XX:+UseTLAB -XX:MaxPermSize=512m"

私のGCパラメータは以下のとおりです。

export GC1_OPTS="-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:**CMSInitiatingOccupancyFraction=50** -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseAdaptiveGCBoundary" export GC2_OPTS="-XX:+ExplicitGCInvokesConcurrent"

CMSを実行すると、2560 MBの50%の後で実行されますか、それとも512 MBのメモリの50%の後で実行されますか?コンセプトは何ですか?

私の合計ヒープメモリは、2560 + 786 + 512 MBになりますよね?

それとも"-XX:NewSize=786m -XX:MaxNewSize=786m"非ヒープ用ですか?

コンセプトを説明してください。

4

1 に答える 1

30

ない。古い世代の占有率が50%に達した後、実行する資格があります。ここで、古い世代のサイズは、ヒープのサイズから新しい世代のサイズを引いたものです:2560m-786m = 1792m、つまり、旧世代は896mに達します。しかし、それが常に唯一のパラメータであるとは限りません。-XX:+ UseCMSInitiatingOccupancyOnlyを唯一のパラメーターにしたい場合は、-XX:+ UseCMSInitiatingOccupancyOnlyを追加することをお勧めします(私の経験では、CMSは実際にはしきい値でトリガーされますが、それがなくても)。

要約する:

  • -Xmx合計ヒープメモリです
  • -XX:NewSize/-XX:MaxNewSizeは、そのヒープ内の新世代のサイズの範囲です
  • 違いは旧世代のサイズの範囲です
  • -XX:PermSize/-XX:MaxPermSizeは、非ヒープメモリである永続世代のサイズの範囲です。
于 2012-09-12T14:23:41.537 に答える