差分表示


* Java HotSpot VM Options
このドキュメントは、Java HotSpot VMのパフォーマンス特性に影響を与える、コマンドラインオプション、及び環境変数についての情報を提供します。明示的に指定しない場合、このドキュメントの情報はすべて、Java HotSpot Client/Server VMの両方に関係します。
--(
微妙に意訳なり、全く書いてないことを書いたり
してるので、適時[[原文>http://java.sun.com/docs/hotspot/VMOptions.html]]を参照のこと。。。
--)
このドキュメントは以下のセクションを含んでいます。

- カテゴリ
- Exact VMオプションの相当品
- _JIT_ARGS環境変数
-- 読まなくていい
- _JVM_ARGS環境変数
-- 読まなくていい
- その他のHotSpot引数
- ラージメモリページサポート

* Java HotSpot VMオプションのカテゴリ
Java HotSpot VMに認識される標準のオプションは、Windows/Solaris/Linux向けJavaアプリケーションランチャーの頁に記載されます。このドキュメントはJava HotSpot VMに認識される非標準のオプションを扱います。
- -Xから始まるオプションは全て非標準です。このため全てのVM実装でサポートされているとは限りません。また、J2SDKの以降のリリースでは予告無しに変更される可能性があります。
- -XXから始まるオプションは通常使わないことが推奨されるオプションです。と言うのは、これらのオプションは環境などの正確な動作前提条件を持ち、システム構成変数への特権アクセスを必要とするかもしれないからです。これらのオプションも予告無しに変更される可能性があります。
* Exact VMのオプションに相当するJava HotSpot VMのオプション
J2SE1.3.0に先立って、Solaris版J2SDKには Exact VM(EVM)として知られるVMが同梱されたものが存在しました。1.3.0の最初の時点で、EVMはJava HotSpot VMに差し替えられました。

EVMのオプションのいくつかは、Java HotSpot VMに於いては名前を変えられたり、別のものに差し替えられたりしました。これらのEVM/Java HotSpot VMのオプションは下表の通りです。

,EVM,概要,HotSpot
,-Xt,インストラクショントレース,無し
,-Xtm,メソッドトレース,無し
,-Xoss,Java stackの最大サイズ,無し(HotSpotが保持するstackは共有です)
,-Xvertifyheap,heapの完全性検証,-XX:+VerifyBeforeGC -XX:+VertifyAfterGC -XX:+VerifyTLE (-XX:+VerifyTLAB in J2SE1.4) -XX:+VerifyBeforeScavenge -xx:+VerifyAfterScavenge(all debug only)
,-Xmaxjitcodesize,コンパイルしたコードの最大サイズ,-Xmaxjitcodesize<num>(前は=が名前/値のデリミタでしたが、今は無いので、-Xmaxjitcodesize32mと言うように設定しましょう。w)
,-Xgenconfig,heapの設定,Xgenconfigの節を参照
,-Xoptimize,最適化するJITコンパイラを使う,-server
,-Xconcgc,concurrentガベージコレクタ(1.2.2_07以降)を使う,-XX:+UseConcMarkSweepGC(J2SE 1.4.1以降から使用可能)

以下はEVMでは無かったHotSpot VMのオプションです。
,Option,概要
,-Xincgc,Train GCを使う
,-Xnoincgc,Train GCを使わない(''デフォルト'')
,-XX:MaxHeapFreeRatio=<Maximum>,heapの空き率上限閾値(''デフォルトは70'')
,-XX:MinHeapFreeRatio=<Minumum>,heapの空き率下限閾値(''デフォルトは40'')。java.sun.comのテーブルではRationとなってるが、typo。;-)
,-Xint,インタプリタのみ(JustInTime Compile無し)
,-XX:+UseBoundThreads,Solaris版限定option。bound thrを使う。s9以降は気にしないでいい。
,-Xmn<Size>,Youngのサイズ指定(J2SE 1.4.0より)
,-XX:+UseParallelGC,パラレルGCを使う(J2SE1.4.1より)
,-XX:+UseAltSigs,Solaris版JVMはSIGUSR1を使っているが、他のアプリケーションでSIGUSR1を使っているものと競合する可能性がある。このオプションは、これをSIGUSR1、SIGUSR2以外に切り替えるためのオプション。J2SE1.4.1より利用可能。(じゃあ、何に変えてるのかや、USR1をなんに使っているのかは知らない。。。)
* Java HotSpot VMの_JIT_ARGS環境変数同等品
殆どの_JIT_ARGS環境変数は内部でバッギングオプションで、対応するHotSpotオプションはありません。殆どが初期導入時の不安定さの原因となりうる最適化のある部分を単に止めるもので、内部テストグループが問題を突き止めるために使われるぐらいでしょう。
,_JIT_ARGS環境変数,HotSpotオプション,概要
,jit/jbe,-client/-server,jbeは1.2ベースのシステムの-Xoptimizeと同じで、jitはデフォルトです。1.2の-Xoptimize(またはjbe)は1.3の-serverの置き換えです。
,trace,-XX:+PrintCompilation,コンパイルされる際のメソッドをトレースする
,V8/V9,-XX:+UseV8InstrsOnly,SPARC上のdebug限定オプションで、実行時の命令セットを限定する
* Java HotSpot VMの_JVM_ARGS環境変数同等品
,_JVM_ARGS環境変数,HotSpotオプション,概要
,bound_threads,-XX:+UseBoundThreads,既出
,fixed_size_young_gen,1.4で-Xmn<size>,既出
,gc_stats,-verbose:gc,さまざまなGCの統計情報を出力する
,ims_concurrent,無し,
,inline_instrs,-XX:MaxInlineSize=<size>,インラインにするメソッドのバイトコード数上限整数値
,,-XX:FreqInlineSize=<size>,頻繁にインラインで実行されるメソッドのバイトコード数上限整数値。。。って、違いがわかりそうで、わからん。;-)
,no_parallel_gc,無し,
,sync_final,無し,
,yield_interval,-XX:DontYeildAlotInterval=<ms>,(debug only)yield間のミリ秒の間隔
,monitor_order,無し,
* 追加のJava HotSpot VM引数
数はmかMをメガバイト、kかKをキロバイト、gかGをギガバイトとして利用することができる。(例えば、32kと32768は同じ) また-XX:の後のフラグ+と-は、以降のオプションを有効(+)か無効(-)にすることができる。(下表で1列目にある数値やフラグがデフォルト値である)

,フラグ,デフォルト,概要
,-XX:MaxHeapFreeRatio,=70,既出
,-XX:MinHeapFreeRatio,=40,既出
,-XX:+UseThreadPriorities,+,NativeのThreadの優先度を利用する
,-XX:MaxPermSize,=64m,heapのPermanent領域のサイズを指定する。[[ここ>http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html]]を参照のこと。
,-XX:-CITime,-,終了時にコンパイル時間の統計情報を出力する。
,-XX:-PrintTenuringDistribution,-,youngからoldへ昇格する際の基準値となるage情報を表示する。 tenureって、動詞じゃないし。。。;-)
,-XX:TargetSurvivorRatio,=50,MinorGC後のSuvivorスペースで使われている領域の割合の希望値
,-XX:+DisableExplicitGC,''-'',System.gc()の呼び出しを抑制する(=呼び出しても無効)。JVMは必要な場合に、GCを行う。''+とあるわりに、Solaris版JVM1.5.0_06だとデフォルト-になってるっぽい''
,-XX:+ScavengeBeforeFullGC,+,Full GCの前に必ずMinor GCを行う(J2SE5.0以降)
,-XX:+UseBiasedLocking,+,biased lockingを有効にする。よくわからんので後述。(*1) J2SE5.0 update6以降(=1.5.0_06)
,-XX:+UseParallelOldGC,+,FGC時にParallelGCを使う。-XX:+UseParallelGCで自動的に設定される。(J2SE5.0 update6以降)
,-XX:+AggressiveOpts,+,将来のデフォルトになるかもしれないコンパイラの最適化を行う。(J2SE5.0 update6以降)
,ここから''Solaris版限定''
,-XX:-AllowUserSiginalHandler,-,アプリがsiginal handlerをinstallする際にWARNを出さない
,-XX:AltStackSize,=16384,代替signalスタックサイズ
,-XX:+MaxFDLimit,+,setrlimit(2)で、ファイルディスクリプタを最大サイズにする
,-XX:-UseBoundThreads,-,既出
,-XX:-UseLWPSynchronization,-,スレッドに基づく同期の代わりに、LWPに基づく同期を用いる。J2SE1.4.0以降のデフォルト。
,-XX:+UseLargePages,+,8K以上のmemory pageを使う。詳細は後述。(Solarisではon、Linux/Windowsではoff がデフォルト)

これ以降のオプションのデフォルトはarch/os/jvmによって異なる。以下はSPARC/-server, JVM1.3の場合である。
,フラグ,デフォルト,概要
,-XX:CompileTheshold,=1000,コンパイル前のメソッドの呼び出し、又は分岐の数。-serverで10000、-clientで1500
,-XX:MaxNewSize,=32m,young領域の最大サイズ
,-XX:NewRatio,=2,old領域を1とした場合のyoung領域の割合。
,-XX:NewSize,=2228224,young領域のデフォルトサイズ
,-XX:PerBlockSpin,=10,Linux版J2SE1.4.2限定オプション
,-XX:-UseSpinning,-,Linux版J2SE1.4.2限定オプション
,-XX:ReservedCodeCacheSize,=32m,コードキャッシュの予約量
,-XX:SurvivorRatio,=64,eden領域を1とした場合の、Survivor領域のサイズ(s0+s1)
,-XX:ThreadStackSize,=512,Threadのスタックサイズ(キロバイト単位)
,-XX:-UseISM,-,[[こっち>http://java.sun.com/docs/hotspot/ism.html]]を参照
,ここから''Solaris版限定''
,-XX:+UseTLE,+,Thread localの変数を、(多分w)thr_getspecific(3THR)を使って管理する。SPARC版-serverでのみ有効。その他は無効。1.4.2では-XX:+UseTLAB
,-XX:-UseMPSS,-,Java heapにlarge pageを利用する。32bit/s10 x86 AMD JVMの場合、2mを設定する。デフォルト値はSPARC 8m x86 4m x86_64 2m)

* 8K以上のメモリページのサポート
ここはSolaris/Windows/Linuxで、Large Pageの設定を行う方法、Large Pageのメリット・デメリットが
書いてある箇所なので、訳は無し。


Last-modified: 2006-10-23 17:30:10