java

Java アプリケーションを起動します。

形式

java [ options ] class [ arguments ]

java [ options ] -jar file.jar [ arguments ]

options

コマンド行オプション。「オプション」を参照してください。

class

呼び出されるクラスの名前。

file.jar

呼び出される JAR ファイルの名前。-jar コマンドと一緒にのみ使用される。

argument

main 関数に渡される引数。

説明

java コマンドは Java アプリケーションを起動します。これは、Java Runtime Environment を起動し、指定されたクラスをロードし、そのクラスの main メソッドを呼び出すことによって行われます。

このメソッドは、public および static として宣言する必要があります。また、値を返してはいけません。さらに、String 配列をパラメータとして指定できなければなりません。メソッド宣言の形式は次のとおりです。

public static void main(String[] args)

デフォルトでは、オプションのない最初の引数が呼び出されるクラスの名前になります。この名前には、完全指定のクラス名を使用するようにしてください。-jar オプションを指定した場合、オプション引数以外の最初の引数がアプリケーションのクラスファイルとリソースファイルを含む JAR ファイルの名前になり、マニフェストの Main-Class ヘッダーで指定されたクラスが起動クラスになります。

Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザークラスパスの 3 か所から起動クラスとほかの使用されているクラスを検索します。

クラス名または JAR ファイル名のあとにある、オプション引数以外の引数は、main 関数に渡されます。

オプション

起動ツールには、現在の実行環境でサポートされている標準オプションのセットがあります。

また、仮想マシンの現在の実装では、非標準オプションのセットもサポートされます。これは、将来のリリースで変更される可能性があります。「非標準オプション」を参照してください。

標準オプション

-client

Java HotSpot Client VM を選択します。64 ビット対応 JDK は現時点では、このオプションを無視し、代わりに Java Hotspot Server VM を使用します。

デフォルトの Java VM の選択については、「Server-Class マシンの検出」を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html

-server

Java HotSpot Server VM を選択します。64 ビット対応 JDK 上では、サポートされるのは Java Hotspot Server VM だけであるため、-server オプションが暗黙的に選択されます。

デフォルトの Java VM の選択については、「Server-Class マシンの検出」を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html

-agentlib:libname[=options]

ネイティブエージェントライブラリ libname をロードします。例を示します。

-agentlib:hprof
 
-agentlib:jdwp=help
 
-agentlib:hprof=help

「JVMTI エージェントのコマンド行オプション」を参照してください。
http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#starting

-agentpath:pathname[=options]

フルパス名を使用して、ネイティブエージェントライブラリをロードします。

-classpath classpath
-cp classpath

クラスファイルを検索するディレクトリ、JAR ファイル、および ZIP アーカイブのリストを指定します。複数のクラスパスエントリはコロン (:) で区切ります。-classpath または -cp を指定すると、CLASSPATH 環境変数の設定がオーバーライドされます。

-classpath-cp も使用されず、CLASSPATH も設定されていない場合、ユーザークラスパスは現在のディレクトリ (.) で構成されます。

便宜上、* のベース名を含むクラスパス要素は、ディレクトリ内の拡張子 .jar または .JAR を持つすべてのファイルのリストを指定するのと同じとみなされます。Java プログラムはこの 2 つの呼び出しを区別できません。

たとえば、ディレクトリ mydir に a.jar と b.JAR が含まれている場合、クラスパス要素 mydir/* は A.jar:b.JAR に展開されます (JAR ファイルの順番は不確定)。このリストには、隠しファイルも含め、指定されたディレクトリ内のすべての JAR ファイルが含まれます。* だけからなるクラスパスエントリは、カレントディレクトリ内のすべての JAR ファイルのリストに展開されます。CLASSPATH 環境変数 (定義されているとき) も同様に展開されます。クラスパスのワイルドカード展開は、Java VM の起動前に実行されます。Java プログラムが展開されていないワイルドカードを認識するのは、環境の照会によってのみです。たとえば、System.getenv("CLASSPATH") の呼び出しです。

-Dproperty=value

システムプロパティーの値を設定します。

-d32

32 ビット環境でアプリケーションを実行します。32 ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64 ビット専用システムを使用していないかぎり、アプリケーションは 32 ビット環境で実行されます。

-d64

64 ビット環境でアプリケーションを実行します。64 ビット環境がインストールされていないかサポートされていない場合は、エラーが報告されます。デフォルトでは、64 ビット専用システムを使用していないかぎり、アプリケーションは 32 ビット環境で実行されます。

現在のところ、Java HotSpot Server VM だけが 64 ビットの操作をサポートしており、-d64 を使用すると -server オプションが暗黙的に有効になります。-d64 使用時には -client オプションは無視されます。この仕様は、将来のリリースでは変更になる可能性があります。

-disableassertions[:package name"..."| :class name ]
-da[:package name"..."| :class name ]

アサーションを無効にします。これはデフォルトの設定です。

引数なしの -disableassertions または -da を指定すると、アサーションが無効になります。"..." で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが無効になります。引数として "..." を指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが無効になります。"..." で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが無効になります。

package com.wombat.fruitbat 内ではアサーションを有効にし、クラス com.wombat.fruitbat.Brickbat 内ではアサーションを無効にした上で、プログラムを実行するには、次のようなコマンドを使用します。

java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat <Main Class>

-disableassertions および -da スイッチは、すべてのクラスローダーおよびシステムクラスに適用されます (システムクラスにクラスローダーはありません)。ただし、この規則には例外が 1 つあります。引数なしの形式で、スイッチはシステムには適用されません。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするための別のスイッチとして、-disablesystemassertions オプションが用意されています。

-enableassertions[:package name"..."| :class name ]
-ea[:package name"..."| :class name ]

アサーションを有効にします。アサーションは、デフォルトでは無効になっています。

引数なしの -enableassertions または -ea を指定すると、アサーションが有効になります。"..." で終わる引数を 1 つ指定すると、指定したパッケージとそのサブパッケージ内でアサーションが有効になります。引数として "..." を指定すると、現在の作業ディレクトリにある名前のないパッケージ内でアサーションが有効になります。"..." で終わらない引数を 1 つ指定すると、指定したクラス内でアサーションが有効になります。

単一のコマンドにこれらのスイッチのインスタンスを複数指定した場合は、指定したスイッチが順番に処理されてからクラスがロードされます。したがって、たとえば、パッケージ com.wombat.fruitbat (サブパッケージを含む) 内でのみアサーションを有効にしてプログラムを実行するには、次のようなコマンドを使用します。

java -ea:com.wombat.fruitbat... <Main Class>

-enableassertions および -ea スイッチは、すべてのクラスローダおよびシステムクラスに適用されます (システムクラスにはクラスローダはありません)。ただし、この規則には例外が 1 つあります。引数なしの形式で、スイッチはシステムには適用されません。この例外を利用すれば、システムクラスを除くすべてのクラスでアサーションを簡単に有効にすることができます。すべてのシステムクラスでアサーションを有効にするための別のスイッチとして、-enablesystemassertions オプションが用意されています。

-enablesystemassertions
-esa

すべてのシステムクラス内でアサーションを有効にします (システムクラスについてアサーションのデフォルトステータスを true に設定します)。

-disablesystemassertions
-dsa

すべてのシステムクラス内でアサーションを無効にします。

-help または -?

使用法を表示して終了します。

-jar

JAR ファイルにカプセル化されたプログラムを実行します。最初の引数は、起動クラスの名前ではなく、JAR ファイルの名前にします。このオプションが機能するには、JAR ファイルのマニフェストに Main-Class: classname という形式の行を指定する必要があります。classname には、アプリケーションの開始位置として機能する public static void main(String[] args) メソッドを含むクラスを指定します。

このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。

java -jar オプションで実行できる JAR ファイルは、実行権限のセットを保持しています。このため、java -jar を使用しないで実行することも可能です。「JAR ファイルの概要」を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jarGuide.html

-javaagent:jarpath[=options]

Java プログラミング言語エージェントをロードします。Java アプリケーションの計測の詳細については、Java API ドキュメントの java.lang.instrument パッケージの説明 (http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html) を参照してください。

-jre-restrict-search

ユーザーのプライベート JRE をバージョン検索に含めます。

-no-jre-restrict-search

ユーザーのプライベート JRE をバージョン検索から除外します。

-showversion

バージョン情報を表示して続行します。(-version も参照してください。)

-splash:imagepath

imagepath に指定された画像を含むスプラッシュ画面を表示します。

-verbose
-verbose:class

クラスがロードされるたびにクラスに関する情報を表示します。

-verbose:gc

ガベージコレクションイベントが発生するたびに報告します。

-verbose:jni

ネイティブメソッドの使用およびその他の Java Native Interface (JNI) アクティビティーに関する情報を報告します。

-version

バージョン情報を表示して終了します。-showversion オプションも参照してください。

-version:release

コマンド行に指定されたクラスまたは JAR ファイルが、release で指定されたバージョンを必要としていることを示します。呼び出された java コマンドのバージョンがこの指定内容を満たさず、かつ適切な実装がシステム上で見つかった場合は、その適切な実装が使用されます。

release オプションには、正確なバージョン、またはバージョン文字列と呼ばれるバージョンのリストを指定します。バージョン文字列は、いくつかのバージョン範囲を空白で区切った形式の順序付きリストです。バージョン範囲は、バージョン IDバージョン ID の後ろにアスタリスク (*) を付加したもの、バージョン ID の後ろにプラス記号 (+) を付加したもの、アンパサンド (&) で結合された 2 つのバージョン ID からなるバージョン範囲、のいずれかになります。アスタリスクはプレフィックス一致を、プラス記号は指定されたバージョン以上を、アンパサンドは 2 つのバージョン範囲の論理 and を、それぞれ意味します。例を示します。

-version:"1.6.0_13 1.6*&1.6.0_10+"

前述の例の意味は、バージョン 1.6.0_13、または 1.6.0_10 以上で 1.6 をバージョン ID プレフィックスとして持つバージョン、のいずれかをクラスまたは JAR ファイルが必要とする、ということです。バージョン文字列の厳密な構文や定義については、「Java Network Launching Protocol & API Specification (JSR-56)」の「Appendix A」を参照してください。

JAR ファイルの場合は、バージョン要件をコマンド行に指定するよりも、JAR ファイルのマニフェスト内に指定することが推奨されています。

このオプションの使用に関する重要なポリシー情報については、「」を参照してください。

非標準オプション

-X

非標準オプションに関する情報を表示して終了します。

-Xint

インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot VM クライアントに対応するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。

-Xbatch

バックグラウンドコンパイルを無効にします。通常、Java VM では、メソッドをバックグラウンドタスクとしてコンパイルし、バックグラウンドコンパイルが終了するまではインタプリタモードでメソッドを実行します。-Xbatch フラグを指定すると、バックグラウンドコンパイルが無効になり、すべてのメソッドのコンパイルが完了するまでフォアグラウンドタスクとして処理されます。

-Xbootclasspath:bootclasspath

ブートクラスファイルを探すディレクトリ、JAR ファイル、および ZIP アーカイブをコロンで区切ったリストで指定します。それらが、Java プラットフォーム JDK に含まれるブートクラスファイルの代わりに使用されます。

rt.jar 内のクラスをオーバーライドするためにこのオプションを使用するアプリケーションは配備しないでください (Java Runtime Environment バイナリコードライセンス違反になります)。

-Xbootclasspath/a:path

ディレクトリ、JAR ファイル、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスのあとに追加されます。

-Xbootclasspath/p:path

ディレクトリ、JAR ファイル、および ZIP アーカイブのパスをコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスの前に追加されます。

rt.jar 内のクラスをオーバーライドするためにこのオプションを使用するアプリケーションは配備しないでください (Java Runtime Environment バイナリコードライセンス違反になります)。

-Xcheck:jni

Java Native Interface (JNI) 機能に対して追加チェックを行います。具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行時環境データを検証します。無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。このオプションを使用すると、パフォーマンス低下が予想されます。

-Xfuture

クラスとファイルの形式を厳密にチェックします。下位互換性のため、Java 仮想マシンが実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックと同程度の厳密さになっています。-Xfuture オプションを指定すると、クラスファイル形式の仕様への準拠を強化するためのより厳密なチェックが有効になります。Java アプリケーション起動ツールの将来のリリースでは、より厳密なチェックがデフォルトになるため、新しいコードを開発するときにはこのフラグを使用することをお勧めします。

-Xnoclassgc

クラスのガベージコレクションを無効にします。このオプションを使用すると、ロード済みクラスからメモリーが回復されなくなるため、全体的なメモリー使用量が増大します。この場合、アプリケーションによっては OutOfMemoryError がスローされる可能性があります。

-Xincgc

インクリメンタルガベージコレクタを有効にします。インクリメンタルガベージコレクタは、デフォルトでは無効になっています。有効にすると、プログラムの実行中にガベージコレクションによる一時停止が発生しなくなります。インクリメンタルガベージコレクタは、プログラムと同時に実行することがあり、この場合、プログラムの利用できるプロセッサ能力が低下します。

-Xloggc:file

-verbose:gc と同様にガベージコレクションイベントが発生するたびに報告しますが、そのデータをファイルに記録します。-verbose:gc を指定したときに報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。

ネットワークの待機時間によって Java VM の実行速度が低下するのを避けるため、このファイルの格納先は、常にローカルファイルシステムにしてください。ファイルシステムが満杯になると、ファイルは切り詰められ、そのファイルにデータが引き続き記録されます。このオプションは -verbose:gc をオーバーライドします (両方がコマンド行に指定されている場合)。

-Xmnsize または -XX:NewSize

若い世代 (ナーサリ) のサイズを設定します。

-Xmsn

メモリー割り当てプールの初期サイズをバイト数で指定します。指定する値は、1M バイトより大きい 1024 の倍数にしなければなりません。K バイトを指定するには文字 k または K、M バイトを指定するには文字 m または M を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。「ガベージコレクタエルゴノミクス」を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc-ergonomics.html

-Xms6291456
-Xms6144k
-Xms6m
-Xmxn

メモリー割り当てプールの最大サイズをバイト数で指定します。指定する値は、2M バイトより大きい 1024 の倍数にしなければなりません。K バイトを指定するには文字 k または K、M バイトを指定するには文字 m または M を付けます。デフォルト値は、実行時にシステムの設定に基づいて選択されます。

サーバー配備の場合、-Xms-Xmx が同一の値に設定されていることがよくあります。「ガベージコレクタエルゴノミクス」を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc-ergonomics.html

-Xmx83886080
-Xmx81920k
-Xmx80m

Solaris 7 および Solaris 8 SPARC プラットフォームの場合の上限は、およそ 4,000 m からオーバーヘッドの量を引いたものです。Solaris 2.6 および x86 プラットフォームの場合の上限は、およそ 2,000 m からオーバーヘッドの量を引いたものです。Linux プラットフォームの場合の上限は、およそ 2,000 m からオーバーヘッドの量を引いたものです。

-Xprof

実行中のプログラムのプロファイルを生成し、プロファイルデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティーとして提供されています。本番稼動システムでの使用を目的としたものではありません。

-Xrs

Java VM によるオペレーティングシステムシグナルの使用を減らします。

以前のリリースで、Java アプリケーションを正規の手順に従ってシャットダウンするためのシャットダウンフック機能が追加されました。この機能により、Java VM が突然終了した場合でも、シャットダウン時にユーザークリーンアップコード (データベース接続のクローズなど) を実行できるようになりました。

Java VM は、シグナルをキャッチすることによって、Java VM の異常終了のためのシャットダウンフックを実装します。Java VM は、SIGHUPSIGINT、および SIGTERM を使用して、シャットダウンフックの実行を開始します。

JVM は、デバッグ用のスレッドスタックをダンプする機能を実現するためにも、同様のメカニズムを使用します。JVM は、スレッドダンプを実行するために SIGQUIT を使用します。

Java VM を埋め込んでいるアプリケーションが SIGINTSIGTERM などのシグナルを頻繁にトラップする必要があると、Java VM のシグナルハンドラの処理に支障が出る可能性があります。-Xrs コマンド行オプションを使用すると、この問題に対処できます。Java VM に対して -Xrs を使用すると、SIGINTSIGTERMSIGHUP、および SIGQUIT に対するシグナルマスクは Java VM によって変更されず、これらのシグナルに対するシグナルハンドラはインストールされません。

-Xrs を指定した場合は、2 つの影響があります。

  • SIGQUIT によるスレッドダンプを利用できない。

  • シャットダウンフック処理の実行は、Java VM が終了しようとしている時点で System.exit() を呼び出すなどして、ユーザーコード側で行う必要がある。

-Xssn

スレッドのスタックサイズを設定します。

-XX:AllocationPrefetchStyle=n

割り当て中に使用されるプリフェッチのスタイルを設定します。デフォルトは 2 です。

-XX:+AggressiveOpts

積極的な最適化を有効にします。

-XX:+|-DisableAttachMechanism

コマンド (jmapjconsole など) が Java VM に接続できるかどうかを指定します。デフォルトでは、この機能は無効になっています。つまり、接続は有効です。例を示します。

java -XX:+DisableAttachMechanism
-XX:+|-FlightRecorder

アプリケーション実行時の Java Flight Recorder (JFR) の使用を切り替えます。これは、次のように -XX:+UnlockCommercialFeatures オプションを同時に指定する必要がある商用機能です。

java -XX:UnlockCommercialFeatures -XX:+FlightRecorder
-XX:FlightRecorderOptions=parameter=value

JFR の動作を制御するパラメータを設定します。このオプションは、JFR が有効になっている (つまり、-XX:+FlightRecorder オプションが指定されている) 場合にのみ使用できます。

次のリストには、使用可能なすべての JFR パラメータが含まれています。

defaultrecording=true|false

記録が連続的バックグラウンド記録なのか、限られた期間だけ実行するのかを指定します。デフォルトでは、このパラメータは false (限られた期間だけ記録を実行する) に設定されます。記録を連続的に実行するには、このパラメータを true に設定します。

disk=true|false

JFR が連続的な記録をディスクに書き込むべきかどうかを指定します。デフォルトでは、このパラメータは false (ディスクへの連続的な記録を無効にする) に設定されます。有効にするには、このパラメータを true に設定し、同時に defaultrecording=true に設定します。

dumponexit=true|false

制御された方法で JVM が終了するときに、JFR データのダンプファイルを生成するべきかどうかを指定します。デフォルトでは、このパラメータは false (終了時にダンプファイルを生成しない) に設定されます。有効にするには、このパラメータを true に設定し、同時に defaultrecording=true に設定します。

ダンプファイルは、dumponexitpath パラメータによって定義された場所に書き込まれます。

dumponexitpath=path

制御された方法で JVM が終了するとき (dumponexit=true パラメータを設定した場合) に作成される、JFR データを含むダンプファイルのパスと名前を指定します。このパスの設定は、同時に defaultrecording=true を設定した場合にのみ有効です。

指定されたパスがディレクトリの場合、JVM は作成日時を示すファイル名を割り当てます。指定されたパスにファイル名が含まれており、そのファイルがすでに存在する場合、JVM は指定されたファイル名に日時スタンプを追加して新しいファイルを作成します。

globalbuffersize=size

データの保持に使用されるプライマリメモリーの合計量 (バイト単位) を指定します。K バイト単位のサイズを指定するには k または K、M バイト単位のサイズを指定するには m または M、G バイト単位のサイズを指定するには g または G を付けます。デフォルトでは、このサイズは 462848 バイトに設定されます。

loglevel=quiet|terror|warning|info|debug|trace

JFR によってログファイルに書き込まれるデータの量を指定します。デフォルトでは、info に設定されます。

maxage=time

デフォルト記録のディスクデータの最大期間 (分単位) を指定します。デフォルトでは、最大期間は 15 分に設定されます。このパラメータは、disk=true パラメータを設定した場合にのみ有効です。

maxchunksize=size

記録のデータチャンクの最大サイズ (バイト単位) を指定します。K バイト単位のサイズを指定するには k または K、M バイト単位のサイズを指定するには m または M、G バイト単位のサイズを指定するには g または G を付けます。デフォルトでは、データチャンクの最大サイズは 12M バイトに設定されます。

maxsize=size

デフォルト記録のディスクデータの最大サイズ (バイト単位) を指定します。K バイト単位のサイズを指定するには k または K、M バイト単位のサイズを指定するには m または M、G バイト単位のサイズを指定するには g または G を付けます。デフォルトでは、ディスクデータの最大サイズは無制限です。

このパラメータは、disk=true パラメータを設定した場合にのみ有効です。

repository=path

一時ディスクストレージのリポジトリ (ディレクトリ) を指定します。デフォルトでは、システムの一時ディレクトリが使用されます。

samplethreads=true|false

スレッドサンプリングを有効にするかどうかを指定します。スレッドサンプリングは、このパラメータとともにサンプリングイベントが有効になっている場合にのみ実行されます。デフォルトでは、このパラメータは有効になっています。

settings=path

イベント設定ファイル (種類は JFC) のパスと名前を指定します。デフォルトでは、JAVA_HOME/jre/lib/jfr にある default.jfc ファイルが使用されます。

stackdepth=depth

JFR によるスタックトレースのスタックの深さ。デフォルトでは、この深さは 64 回のメソッド呼び出しに設定されます。最大は 2048、最小は 1 です。

threadbuffersize=size

スレッドごとのローカルバッファーサイズ (バイト単位) を指定します。K バイト単位のサイズを指定するには k または K、M バイト単位のサイズを指定するには m または M、G バイト単位のサイズを指定するには g または G を付けます。このパラメータの値を大きくすると、グローバルストレージへのフラッシュと競合せずに、より多くのデータを収集できます。スレッドリッチ環境でアプリケーションフットプリントが増加する場合があります。デフォルトでは、ローカルバッファーサイズは 5K バイトに設定されます。

複数のパラメータの値を指定するには、それらをコロンで区切ります。たとえば、連続的な記録をディスクに書き込むように JFR に指示し、データチャンクの最大サイズを 10M バイトに設定するには、次を指定します。

-XX:FlightRecorderOptions=defaultrecording=true,disk=true,maxchunksize=10M
-XXLargePageSizeInBytes=n

ラージページの最大サイズを指定します。

-XX:MaxGCPauseMillis=n

最大 GC 一時停止時間の目標を設定します。

これはソフトゴールのため、Java VM は実現のために最善の努力をします。デフォルトで設定されている最大値はありません。

-XX:NewSize

若い世代 (ナーサリ) のサイズを設定します。-Xmnsize と同じです。

-XX:ParallelGCThreads=n

パラレルコレクタ内の GC スレッドの数を設定します。

-XX:PredictedClassLoadCount=n

このオプションを使用するには、最初に UnlockExperimentalVMOptions フラグを設定する必要があります。アプリケーションが多数のクラスをロードする場合、特に class.forName() が頻繁に使用される場合は、PredictedClassLoadCount フラグを使用します。推奨値は、-verbose:class の出力に示されるロード済みクラスの数です。

例:

java -XX:+UnlockExperimentalVMOptions -XX:PredictedClassLoadCount=60013
-XX:+PrintCompilation

Java HotSpot VM ダイナミックランタイムコンパイラからの詳細出力を出力します。

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps

ガベージコレクション出力をタイムスタンプとともに出力します。

-XX:SoftRefLRUPolicyMSPerMB=0

このフラグは、ソフトウェア参照の積極的な処理を有効にします。このフラグは、Java HotSpot VM ガベージコレクタがソフトウェア参照カウントの影響を受ける場合に使用します。

-XX:StartFlightRecording=parameter=value

Java アプリケーションの JFR 記録を開始します。このオプションは、実行時に記録を開始する JFR.start 診断コマンドと同等です。JFR 記録を開始するときに、次のパラメータを設定できます。

compress=true|false

gzip ファイル圧縮ユーティリティーを使用してディスク上の JFR 記録ログファイル (種類は JFR) を圧縮するかどうかを指定します。このパラメータは、filename パラメータが指定されている場合にのみ有効です。デフォルトでは、false (記録を圧縮しない) に設定されます。圧縮を有効にするには、このパラメータを true に設定します。

defaultrecording=true|false

記録が連続的バックグラウンド記録なのか、限られた期間だけ実行するのかを指定します。デフォルトでは、このパラメータは false (限られた期間だけ記録を実行する) に設定されます。記録を連続的に実行するには、このパラメータを true に設定します。

delay=time

Java アプリケーションが起動してから記録を開始するまでの遅延時間 (ミリ秒単位) を指定します。デフォルトでは、遅延はなく、このパラメータは 0 に設定されます。

duration=time

記録の継続時間 (ミリ秒単位) を指定します。デフォルトでは、この継続時間は無制限です。

filename=path

JFR 記録ログファイルのパスと名前を指定します。

name=identifier

JFR 記録の識別子を返します。デフォルトでは、Recording x に設定されます。

maxage=time

デフォルト記録のディスクデータの最大期間 (分単位) を指定します。デフォルトでは、最大期間は 15 分に設定されます。

maxsize=size

記録がスレッドバッファーからグローバルバッファーにフラッシュされるまでの最大サイズ (バイト単位) を指定します。K バイト単位のサイズを指定するには k または K、M バイト単位のサイズを指定するには m または M、G バイト単位のサイズを指定するには g または G を付けます。デフォルトでは、最大サイズは無制限です。

このパラメータは、サイズが制約された記録の場合にのみ有効です。

settings=path

イベント設定ファイル (種類は JFC) のパスと名前を指定します。デフォルトでは、JAVA_HOME/jre/lib/jfr にある default.jfc ファイルが使用されます。

複数のパラメータの値を指定するには、それらをコロンで区切ります。たとえば、現在の作業ディレクトリ内の test.jfr に記録を保存し、ログファイルを圧縮するように JFR に指示するには、次を指定します。

-XX:StartFlightRecording=filename=test.jfr,compress=true
-XX:TLABSize=n

Java HotSpot VM では、スレッドローカル割り当てバッファー (TLAB) がデフォルトで有効になっています。Java HotSpot VM は、TLAB のサイズを割り当てパターンに基づいて決定します。-XX:TLABSize オプションを使用して、TLAB のサイズを微調整できます。

-XX:+UnlockCommercialFeatures

このフラグは、商用機能の使用を能動的にロック解除するために使用します。商用機能とは、Java SE Products Web ページで定義されている製品「Oracle Java SE Advanced」または「Oracle Java SE Suite」のことです。

このフラグが指定されていない場合は、デフォルトで、使用可能な商用機能なしで Java 仮想マシンが実行されます。有効にしたあとで、実行時にその使用を無効にすることはできません。

-XX:+|-UseCompressedOops

64 ビット Java VM で圧縮参照を有効にします。

このオプションはデフォルトで true になっています。

-XX:+UseConcMarkSweepGC or -XX:+UseG1GC

Concurrent Mark Sweep (CMS) または G1 ガベージコレクタを有効にします。

-XX:+|-UseLargePages

ラージページのサポートを有効にします。

Solaris では、ラージページがデフォルトで有効になっています。

-XX:+UseParallelOldGC

パラレルガベージコレクタを有効にします。パラレルガベージコレクタは、スループットおよび平均レスポンス時間に関して最適化されます。

-version:release オプションでは、どんなに複雑にリリースを指定してもかまいません。ただし、現実的なリリース指定の限られたサブセットを使用するだけでも適切なポリシーを表現できるため、それらのサブセットのみが完全にサポートされます。それらのポリシーを次に示します。

  1. 任意のバージョン。これは、このオプションを使用しないことで表現できます。

  2. ある特定のバージョン ID 値よりも大きい任意のバージョン。例を示します。

    "1.6.0_10+"
    

    この場合、1.6.0_10 よりも大きい任意のバージョンが使用されます。これは、指定されたバージョンで特定のインタフェースが導入された (あるいはそのバグが修正された) 場合に便利です。

  3. ある特定のバージョン ID よりも大きいバージョン。ただし、そのリリースファミリの上限によって制限するもの。例を示します。

    "1.6.0_10+&1.6*"
    
  4. 項目 2 または 3 の or 表現。例を示します。

     "1.6.0_10+&1.6* 1.7+"
    

    これは項目 2 に似ていますが、ある変更が特定のリリース (1.7) で導入されたが、その同じ変更が以前のリリースのアップデートでも利用可能になった、という場合に便利です。

パフォーマンスチューニングの例

次の例は、スループットまたはレスポンス時間を最適化する試験的なチューニングフラグの使用方法を示しています。

例 1 スループットを向上させるチューニング
java -d64 -server -XX:+AggressiveOpts -XX:+UseLargePages -Xmn10g  -Xms26g -Xmx26g 
例 2 レスポンス時間を短縮するチューニング
 java -d64 -XX:+UseG1GC -Xms26g Xmx26g -XX:MaxGCPauseMillis=500 -XX:+PrintGCTimeStamps 

終了ステータス

一般に起動元から次の終了値が返されるのは、通常、起動元が不正な引数で呼び出されたか、深刻なエラーが発生したか、または Java 仮想マシンから例外がスローされた場合です。ただし、Java アプリケーションは API 呼び出し System.exit(exitValue) を使用して任意の値を返す可能性があります。

  • 0: 正常終了。

  • >0: エラーが発生した。

関連項目


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.