ページの先頭行へ戻る
Interstage Application Server V13.0.0 チューニングガイド
FUJITSU Software

7.2.7 GC処理用スレッド数

パラレルGC

パラレルGCを使用した場合は、実行するハードウェアに搭載しているCPU数に依存した数のGC処理用スレッドがJavaプロセス内に作成されます。そのため、GC処理用スレッドの数分だけ、スタック領域などのスレッド用のメモリ領域が必要となります。

Javaプロセス内でのメモリ量を抑えるためなど、GC処理用スレッドの数を調整する場合には、以下のオプションでGC処理用スレッドの数を指定することにより、GC処理用スレッドの数を調整することができます。

なおGC処理用スレッドの数を抑制した分だけGC処理における性能がおちる場合もありますので、このオプションを用いる場合には、十分な性能確認を実施してください。また、一般的に、CPU数以上の数のGC処理用スレッドを作成しても、GC処理における性能向上にはつながりません。

パラレルGCで使用するGC処理用スレッドの数を指定するオプション

-XX:ParallelGCThreads=GC用スレッドの数

GC用スレッドの数は、New世代領域用パラレルGC,およびパラレル圧縮に適用されます。
「0」が指定された場合は、デフォルト値となります。デフォルト値は以下のとおりです。

  • 実行するハードウェアに搭載しているCPU数が7以下の場合 = CPU数分

  • 実行するハードウェアに搭載しているCPU数が8以上の場合 = 8

CMS付きパラレルGC

CMS付きパラレルGCを使用した場合は、実行するハードウェアに搭載しているCPU数に依存した数のGC処理用スレッドがJavaプロセス内に作成されます。そのため、GC処理用スレッドの数分だけ、スタック領域などのスレッド用のメモリ領域が必要となります。

Javaプロセス内でのメモリ量を抑えるためなど、GC処理用スレッドの数を調整する場合には、以下のオプションでGC処理用スレッドの数を指定することにより、GC処理用スレッドの数を調整することができます。

なおGC処理用スレッドの数を抑制した分だけGC処理における性能がおちる場合もありますので、このオプションを用いる場合には、十分な性能確認を実施してください。また、一般的に、CPU数以上の数のGC処理用スレッドを作成しても、GC処理における性能向上にはつながりません。

CMS付きパラレルGCで使用するGC処理用スレッドの数を指定するオプション

-XX:ParallelGCThreads=New世代領域GC用スレッドの数

New世代領域用GC処理を行うGCスレッドの数を指定します。

最小値は「2」です。「0」または「1」が指定された場合は、デフォルト値となります。
デフォルト値は以下のとおりです。

  • 実行するハードウェアに搭載しているCPU数が1の場合 = 2

  • 実行するハードウェアに搭載しているCPU数が2以上7以下の場合 = CPU数分

  • 実行するハードウェアに搭載しているCPU数が8以上の場合 = 8

CMS-GC処理用スレッド数

CMS付きパラレルGCを使用した場合は、以下のCMS-GC処理用スレッドがJavaプロセス内に作成されます。そのため、CMS-GC処理用スレッドの数分だけ、スタック領域などのスレッド用のメモリ領域が必要となります。

  • CMSスレッド (必ず1つ作成されます)

  • コンカレント・マーク処理専用スレッド

CMSスレッドの他、CMS-GC処理の中のコンカレント・マーク処理を複数スレッドで並列化して実行するために、コンカレント・マーク処理専用スレッドを追加で作成することができます。以下のオプションでCMS-GC処理用スレッドの数を指定することにより、CMS-GC処理用スレッドの数を調整することができます。

なお一般的に、CPU数以上の数のCMS-GC処理用スレッドを作成しても、CMS-GC処理における性能向上にはつながりません。

CMS付きパラレルGCで使用するCMS-GC処理用スレッドの数を指定するオプション

-XX:ConcGCThreads=CMS-GC処理用スレッドの数

コンカレント・マーク処理専用スレッドの数を指定します。

最小値は「2」です。オプションの指定がない場合、または「1」が指定された場合は、CMSスレッドだけ生成されます。

「0」が指定された場合は、自動的に以下の値が設定されます。(実行するハードウェアに搭載しているCPU数の1/4(端数切り上げ)をAとした場合)

  • Aが1の場合 = 0(CMSスレッドだけ生成されます)

  • Aが2以上7以下の場合 = A

  • Aが8以上の場合 = 8

なお指定値および自動設定値どちらの場合も、「-XX:ParallelGCThreads」の値よりも大きい場合は、「-XX:ParallelGCThreads」の値となります。

パラレルGCについては、"7.4.3 New世代領域用制御処理並列化機能付きGC(パラレルGC)"を参照してください。