JRockit SDK ユーザーズ ガイド
BEA JRockit JVM の起動とコンフィグレーション
この節では、BEA JRockit の起動方法と、標準および非標準のコマンドライン オプションを使用してコンフィグレーションする方法について説明します。内容は以下のとおりです。
注意 : JRockit が予期しない動作をする場合は、BEA JRockit の開発者向け FAQ を参照してください。それでも問題が解決しない場合は、support@bea.com まで電子メールでお問い合わせください。
BEA JRockit を起動する前に
BEA JRockit JVM を起動する前に、次のディレクトリが PATH 環境変数に設定されていることを確認します。
<jrockit-install-directory>/bin
(Linux の場合)
<jrockit-install-directory>¥bin
(Windows の場合)
BEA JRockit の起動
BEA JRockit を起動するには、コマンドラインで次のように入力します。
java
<configuration and tuning options>
myClass
<configuration and tuning options>
は、使用するコンフィグレーション オプションおよびチューニング オプションです。コンフィグレーション オプションについては、「BEA JRockit のコンフィグレーション」で後述します。このバージョンの BEA JRockit で使用できるチューニング オプションの詳細については、『BEA JRockit JVM チューニング ガイド』を参照してください。
注意 : ファイルの絶対パスを使用して JRockit を起動することもできます。たとえば、Linux では /usr/local/java/bin/java
(インストール先によって異なる)、Windows では c:¥bea¥jrockit
xxx
¥bin¥java
(インストール先によって異なる) のようになります。
起動コマンドのサンプル
チューニング オプションを指定した起動コマンドのサンプルは次のようになります。
java -verbose:memory -Xgcprio:throughput -Xmx:256m -Xms:64m -Xns:24m myClass
この例では、以下のオプションが設定されています。
-verbose:memory
- メモリ使用状況に関する冗長出力を表示します。
-Xgcprio:throughput
- メモリ スループットを優先する動的ガベージ コレクタが使用されます。
-Xmx:256m
- 最大ヒープ サイズが 256MB に設定されます。
-Xms:64m
- 初期ヒープ サイズが 64MB に設定されます。
-Xns:24m
- ナーサリ サイズが 24MB に設定されます。
myClass
- Main()
メソッドを含むクラスを識別します。
BEA JRockit のコンフィグレーション
BEA JRockit の起動時に、標準または非標準のコマンドライン オプションを使用して動作に関するパラメータを設定できます。この節では、これらのオプションについて解説し、起動時にオプションを使用して BEA JRockit をコンフィグレーションする方法について説明します。内容は以下のとおりです。
標準オプションの使用
標準のコマンドライン オプションは JVM に関係なく同じように機能します。つまり、BEA JRockit JVM、Sun Microsystems の HotSpot JVM、または他のサードパーティ JVM のいずれを実行している場合でも同じように機能します。
JVM のタイプの設定
以下のコマンドでは、実行する JVM のタイプ (サーバサイドまたはクライアントサイド) を設定します。
-server
BEA JRockit JVM をサーバサイド JVM として起動します。この値はデフォルトです。
-client
BEA JRockit JVM をクライアントサイド JVM として起動します。このオプションは、ヒープが小さく、アプリケーションの実行時間が短いことを想定している場合に役立ちます。
JVM のタイプを設定する (またはデフォルトを受け入れる) と、実行時に使用されるガベージ コレクション アルゴリズムも設定されることに注意してください。-server
を指定すると、シングルスペース、パラレル マーク、パラレル スイープのコレクタが起動され、-client
を指定すると、シングルスペース、コンカレント マーク、コンカレント スイープのガレージ コレクタが起動されます。動的な統合ガレージ コレクタや特定の固定ガベージ コレクタなど、別のコレクタを使う場合は、コマンドライン オプションとして -Xgcprio
または -Xgc
を使用してデフォルトをオーバーライドできます。ガベージ コレクションおよび -server
オプションと -client
オプションの詳細については、「BEA JRockit メモリ管理システムの使い方」を参照してください。
一般的な情報の設定
以下の標準のコマンドライン オプションは BEA JRockit JVM の一般的な情報を設定します。
-classpath <directories and zips/jars separated by : (Linux) or ; (Windows)>
VM にクラスとリソースの検索先を示します。
代わりに、オプション -cp
を使用して -classpath
を表すこともできます。次に例を示します。
-cp <directories and zips/jars separated by : or ;>
-D<name>[=<value>]
VM に Java システム プロパティを設定するよう指示します。このプロパティは、java.lang.System
のメソッドを使用して Java プログラムに読み込むことができます。
ユーザへの情報の提供
以下のオプションでは、システムがオペレータにメッセージを提供するかどうかと、そのメッセージの形式や内容について決定します。
-version
JRockit に製品のバージョン番号を表示してから終了するように指示します。
-showversion
VM に製品のバージョン番号を表示してから続行するように指示します。
-verbose[:<components
separated by ,>]
JRockit に冗長出力を表示するよう指示します。このオプションは主にデバッグを目的として使用するもので、コンソールに大量に出力されます。サポートされる要素は、memory
、load、gc、opt
、および codegen
です。要素を指定しない場合、JRockit はすべての冗長出力を表示します。各要素を指定した場合に表示される -verbose
情報の詳細については、表 2-1 を参照してください。
-help
VM に短いヘルプ メッセージを表示するよう指示します。
-X
VM に拡張オプションに関する短いヘルプ メッセージを表示するよう指示します (この -X
オプションと、この後に説明する非標準の -X
オプションを混同しないようにしてください)。
非標準オプションの使用
非標準の (-X
) コマンドライン オプションは、BEA JRockit JVM 専用のオプションです。さまざまな Java アプリケーションのニーズに合わせて BEA JRockit JVM の動作を変更します。これらのオプションはすべて -X
で始まり、他の JVM では機能しません (反対に、他の JVM で使用される非標準のオプションは BEA JRockit では機能しません)。
注意 : これらのオプションは非標準であるため、いつでも変更される可能性があります。
動作に関するオプションの設定
以下の非標準オプションは BEA JRockit JVM の一般的な動作を定義します。
-Xnoopt
VM にコードを最適化しないよう指示します。
-Xverify
VM に完全なバイトコードの検証を実行するよう指示します。
-Xstrictfp
厳密な浮動小数点演算をすべてのクラスのすべてのメソッドでグローバルに有効にします。このオプションは、Java キーワード strictfp
と似ています。strictfp
の詳細については、Java 言語仕様を参照してください。
ロギング情報の表示
-Xverbose
-Xverbose
を使用すると、BEA JRockit はシステムに関する特定の情報を起動時に画面に出力します。表示される情報は、オプションと一緒に指定するパラメータによって異なります。たとえば、パラメータ cpuinfo
を指定すると、CPU に関する情報が表示され、ハイパー スレッディングが有効かどうかを JVM が判断できるかどうかがわかります。表 2-1 は、-Xverbose
に使用できるパラメータを示しています。
注意 : 複数のパラメータを使用するには、次のようにカンマで区切ります。
-Xverbose:gc,opt
表 2-1 -Xverbose パラメータ
パラメータ
|
画面への出力
|
codegen
|
コンパイルされる各メソッドの名前。codegen の冗長出力は次のようになります。
[codegen] 0 : 17.9411 ms [codegen] 0 68592131 1 java.lang.Object.unlockFatReal_jvmpi (Ljava.lang.Object;Ljava.lang.Thread;I)V: 17.94 ms [codegen] 1 : 2.0262 ms [codegen] 0 0 2 java.lang.Object.acquireMonitor(Ljava.lang.Object;II)I: 19.97 ms [codegen] 2 : 4.4926 ms [codegen] 0 10 3 java.lang.Object.unlockFat(Ljava.lang.Object;Ljava.lang.Thread;I)V: 24.46 ms [codegen] 3 : 0.3328 ms
|
cpuinfo
|
CPU に関する参考情報。cpuinfo の冗長出力は次のようになります。
[ cpuinfo] Vendor: GenuineInt [cpuinfo] Type: Original OEM [cpuinfo] Family: Pentium Pro [cpuinfo] Model: Pentium III/Pentium III Xeon [cpuinfo] Brand: Pentium III processor [cpuinfo] Supports: On-Chip FPU [cpuinfo] Supports: Virtual Mode Extensions [cpuinfo] Supports: Debugging Extensions [cpuinfo] Supports: Page Size Extensions
|
load
|
ロードされた各クラスの名前。load の冗長出力は次のようになります。
[load ] 0 1 java.lang.Object+ [load ] 0 2 java.io.Serializable+ [load ] 0 3 java.lang.Class+ [load ] 0 5 java.lang.reflect.AccessibleObject+ [load ] 0 6 java.lang.reflect.Member+ [load ] 0 6 java.lang.reflect.Method+
|
memory; gc
|
メモリ管理システムに関する以下のような情報。
-Xverbose:memory または -Xverbose:gc で表示される情報は、使用するガベージ コレクタのタイプによって異なります。
|
memory; gc
gencon の場合
|
世代別コンカレント コレクタ (-Xgc:gencon ) を実行する JVM で、memory または gc を指定する場合、レポートは次のようになります。
[memory ] Generational Concurrent collector [memory ] nursery 20480K, heap 65536K, maximal heap 262144K [memory ] <start>: Nursery GC <before>K-><after>K (<heap>K), <total> ms [memory ] <s>-<end>: GC <before>K-><after>K (<heap>K), <total> s (<pause> ms) [memory ] <s/start> - start time of collection (seconds since jvm start) [memory ] <end> - end time of collection (seconds since jvm start) [memory ] <before> - memory used by objects before collection (KB) [memory ] <after> - memory used by objects after collection (KB) [memory ] <heap> - size of heap after collection (KB) [memory ] <total> - total time of collection (seconds or milliseconds) [memory ] <pause> - total pause time during collection (milliseconds) Now running The GcList Test [memory ] 0.860: Nursery GC 61615K->42008K (86016K), 11.400 ms [memory ] 0.953: Nursery GC 62488K->42876K (86016K), 10.895 ms [memory ] 1.031: Nursery GC 63356K->45303K (86016K), 30.156 ms [memory ] 1.172: Nursery GC 65783K->46168K (86016K), 11.639 ms [memory ] 1.250: Nursery GC 66648K->48596K (86016K), 31.189 ms The execution of The GcList Test took 0.578s
|
memory; gc
singlecon の場合
|
シングルスペース コンカレント コレクタ (-Xgc:singlecon ) を実行する JVM で、memory または gc を指定する場合、レポートは次のようになります。
[memory ] Single Generation Concurrent collector [memory ] heap 65536K, maximal heap 262144K [memory ] <s>-<end>: GC <before>K-><after>K (<heap>K), <total> s (<pause> ms) [memory ] <s/start> - start time of collection (seconds since jvm start) [memory ] <end> - end time of collection (seconds since jvm start) [memory ] <before> - memory used by objects before collection (KB) [memory ] <after> - memory used by objects after collection (KB) [memory ] <heap> - size of heap after collection (KB) [memory ] <total> - total time of collection (seconds or milliseconds) [memory ] <pause> - total pause time during collection (milliseconds) Now running The GcList Test [memory ] 1.016-1.172: GC 58543K->13906K (89716K), 0.156 s (3.420 ms) The execution of The GcList Test took 0.563s Now running The GcList Test [memory ] 1.422-1.469: GC 102004K->389K (122816K), 0.047 s (5.048 ms)
|
memory; gc
parallel の場合
|
パラレル コレクタ (-Xgc:parallel ) を実行する JVM で、memory または gc を指定する場合、レポートは次のようになります。
[memory ] Parallel collector [memory ] heap 65536K, maximal heap 262144K [memory ] <start>: GC <before>K-><after>K (<heap>K), <total> ms [memory ] <start> - start time of collection (seconds since jvm start) [memory ] <before> - memory used by objects before collection (KB) [memory ] <after> - memory used by objects after collection (KB) [memory ] <heap> - size of heap after collection (KB) [memory ] <total> - total time of collection (milliseconds) Now running The GcList Test [memory ] 1.016: GC 65536K->1463K (65536K) in 12.933 ms The execution of The GcList Test took 0.500s Now running The GcList Test [memory ] 1.282: GC 65536K->1502K (65536K) in 11.046 ms [memory ] 1.563: GC 65536K->1503K (65536K) in 12.119 ms The execution of The GcList Test took 0.484s Now running The GcList Test [memory ] 1.782: GC 65536K->593K (65536K) in 9.365 ms The execution of The GcList Test took 0.125s
|
opt
|
最適化されるすべてのメソッドの情報。opt の冗長出力は次のようになります。
[opt ] 280 2434 0 ObjAlloc.main([Ljava.lang.String;)V: 0.00 ms [opt ] 0 : 9.8996 ms
|
ロギング情報へのタイムスタンプの挿入
-Xverbosetimestamp
-Xverbose
で生成される情報にタイムスタンプを加えるには、-Xverbosetimestamp
コマンドを使用します。このコマンドを使用すると、次のように日付と時間が冗長出力の前に表示されます。
[Wed Jan 14 16:51:57 2004][14578][load ]created: java/lang/Integer : 1.4034ms
セキュリティ マネージャを使用したシステムの保護
BEA JRockit では、Management Console、JRA、およびその他のツールでそれぞれの独自のインタフェースを使って実行中のプロセスに接続できます。システム上でローカルに実行するツールに接続できる専用のポートを VM 上に開き、ネットワークの他の場所で動作している他のツールからは接続できないようにすることができます。これにより、承認済みのユーザがプロダクション システムにアクセスしてツールをローカルに実行できるので、承認されないユーザにプロダクション システムへの侵入を許すセキュリティ ホールを作らずに、実行中の BEA JRockit インスタンスに対してモニタまたは接続を実行できます。
これを行うには、セキュリティ マネージャを使用して JVM を実行し、権限を付与するホストに対し、管理サーバへのアクセス権を付与する必要があります。次の手順に従います。
-Djava.security.manager
を指定して BEA JRockit を実行します。
ポリシー ファイル内で、以下のコード例に示すように適切なパーミッションを許可します。
grant {
permission java.net.SocketPermission "localhost:7090", "*";
}
BEA JRockit JVM (サービスとして実行する場合) がログオフ イベントの受信後に停止しないようにする
BEA JRockit をサービスとして実行している場合 (Web サーバのサーブレット エンジンなど)、CTRL_LOGOFF_EVENT
または SIGHUP
を受け取る可能性があります。そのようなイベントを受け取ると、VM は停止を始めようとしますが、オペレーティングシステムは実際にはプロセスを終了しないため、停止は失敗します。このような障害の可能性を回避するには、-Xnohup
コマンドライン オプションを使用します。BEA JRockit でこのオプションを使用すると、JVM は CTRL_LOGOFF_EVENT
または SIGHUP
イベントの監視や処理を行いません。
-Xnohup
を指定する場合は、以下の点に注意してください。
〔Ctrl〕+〔Break〕を押してもスレッド ダンプは生成されない。
停止フックの実行は、BEA JRockit が終了するときに System.exit()
を呼び出すなどして、ユーザ コード側で行う必要がある。
Linux ユーザに対する特別な注意
32 ビットまたは 64 ビットの Linux マシンで BEA JRockit を実行している場合は、Red Hat AS 上でのコア ダンプを有効にし、すべての Linux バージョンに対して 2 つのスレッド ライブラリのいずれかを選択するために、2 つのコンフィグレーション オプションを追加できます。以下の情報を参照してください。
Red Hat AS でのコア ダンプの有効化
Red Hat AS を使用していて、BEA JRockit がクラッシュした場合に作業ディレクトリに core/javacore ファイルが作成されるようにするには、コア ダンプを有効にする必要があります。そのためには、ulimit -c
値を、ゼロより大きく、ファイル システムが対応できる値に設定します (ulimit -c 10000000
など)。この値はブロック単位で測定されます。各ブロックは 1KB に相当します。ulimit
値は、コマンドライン、*.profile
ファイル、またはシェル スクリプトで設定できます。
NPTL のオーバーライド
ネイティブ POSIX スレッド ライブラリ (NPTL) は、Red Hat Enterprise Linux 3.0 で LinuxThreads の代わりに使用できるスレッド ライブラリ オプションです。NPTL を無効にし、LinuxThreads を使用する場合は、環境で LD_ASSUME_KERNEL=2.4.1
を設定します。