ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server チューニングガイド

7.5.1 スタックのチューニング

  本節では、Javaアプリケーションで使用するスレッドのスタックのチューニング方法および、チューニングによる影響範囲を説明します。

■チューニング方法

  Java APIで生成するスレッドのスタックサイズは、“-Xss”オプションで指定することができます。

  “-Xss”オプションは、バイト単位でスタックサイズを指定します。例えば、スタックサイズを512KBに設定する場合、“-Xss512k”と指定します。

  なお、mainメソッドが実行されるスレッドはJava VMの起動前に作成されたスレッドである(Java APIで作成されたスレッドではない)ため、“-Xss”オプションによるスタックサイズの指定は効果がありません。

  またJDK/JRE内で実行されるJavaメソッドを自動的にコンパイルする専用スレッド(自動コンパイル用スレッド)のスタックサイズは、“-XX:CompilerThreadStackSize”オプションで指定することができます。

  通常、自動コンパイル用スレッドのスタックサイズを指定する必要はありません。

  “-XX:CompilerThreadStackSize”オプションは、キロバイト(Kバイト)単位で自動コンパイル用スレッドのスタックサイズ指定します。例えば、スタックサイズを1024KBに設定する場合、”-XX:CompilerThreadStackSize=1024”と指定します。

  Java APIで生成したスレッドおよび自動コンパイル用スレッドのデフォルトのスタックサイズを、“表7.5 Java APIで生成したスレッドおよび自動コンパイル用スレッドのデフォルトのスタックサイズ”に示します。

表7.5 Java APIで生成したスレッドおよび自動コンパイル用スレッドのデフォルトのスタックサイズ

JDK/JREのバージョン

OS

JDK/JREの実行モード

Java APIで生成したスレッド(注2)

自動コンパイル用スレッド (Client VM)(注2)

自動コンパイル用スレッド (FJVM)

JDK/JRE 1.4

Windows

(ただし、Windows Server(R) for Itanium-based Systemsを除く)

32ビットモード

256KB

256KB

2048KB

RHEL-AS4(x86)/AS4(EM64T)

Solaris

32ビットモード

512KB

512KB

2048KB

Windows Server(R) 2003 for Itanium-based Systems (注1)

RHEL-AS4(IPF)

64ビットモード

1024KB

    -(注3)

4096KB

JDK/JRE 5.0

Windows

(ただし、Windows Server(R) for Itanium-based Systemsを除く)

32ビットモード

256KB

256KB

2048KB

Linux for x86

Linux for Intel64

Solaris

32ビットモード

512KB

512KB

2048KB

Windows Server(R) x64 Editions

Windows Server(R) for Itanium-based Systems (注1)

Linux for Intel64

Linux for Itanium

64ビットモード

1024KB

    -(注3)

4096KB

JDK/JRE 6

Windows

(ただし、Windows Server(R) for Itanium-based Systemsを除く)

32ビットモード

320KB

320KB

2048KB

Linux for x86

Linux for Intel64

32ビットモード

320KB

512KB

2048KB

Solaris

32ビットモード

512KB

512KB

2048KB

Windows Server(R) x64 Editions

RHEL5(Intel64)

64ビットモード

1024KB

    -(注3)

4096KB

注1) Windows Server(R) for Itanium-based Systemsでは、デフォルト値または“-Xss”オプション/“-XX:CompilerThreadStackSize”オプションで指定した値の2倍の大きさが、スレッドに対して割り当てられるスタックの実際のサイズとなります。詳細は、“基礎知識”の“7.1.4 スタック”内にある注意事項“スタックサイズについて”を参照してください。

注2) Windows版JDK/JREにおけるスタックサイズは、java.exeなどWindows版JDK/JREが提供するJDKツールを用いた場合の値です。JNIを用いて独自にJava VMを起動しているWindowsアプリケーションの場合は、Java VMを起動したプログラムのメインスレッドに対するスタックサイズと同じ値になります。

注3) 実行モードが64ビットモードのJDK/JREでは、Java HotSpot Client VMは搭載していません。

注4) スタック領域の実際の管理はOSが行います。そのためスタック領域に関する管理方法/動作仕様については、JDK/JREを実行する各OSの仕様に依存します。

■チューニングの影響範囲

  スタックのサイズを変更した場合の影響範囲を、次に示します。