2013-02-11 7 views
10

HotSpot JavaのVM引数の呼び出しが-client、-server、または階層化されたコンパイルオプションで実行されているかどうかを知りたいと思います。 VM引数を指定しない場合、デフォルトでどちらが選択されますか? JITコンパイラが実行されている診断を出力する方法はありますか?これはホットスポットであると仮定すると、実行中のJava HotSpot JITコンパイラはどれですか?

答えて

4

:たとえば

-XshowSettings:vm 

は、私がの出力を得る私のWindowsマシン上:実行されるプログラムから

VM settings: 
    Max. Heap Size (Estimated): 1.77G 
    Ergonomics Machine Class: client 
    Using VM: Java HotSpot(TM) 64-Bit Server VM 
+0

ありがとうございました。私はOS XでHotspotを実行していますが、Java 1.6&1.7ではオプションが認識されていません。 –

+0

@JulienChastang:これは奇妙なことです.WindowsとLinuxの両方でうまくいきます。 'java -X'は何を表示しますか? –

+0

私の悪いです。実際には1.6では認識されませんが、1.7では上記の情報を私に提供します。不思議なことに、私がjava -client -XshowSettings:vmを提供するとき、それはまだサーバーであると主張します。 Charles Nutter(http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html)は、あなたが64ビットであれば、-serverが唯一のオプションであることを示唆しているようです。 Oracleからこれについていくらか明確にすることは良いことです。 –

2

を、あなたは区別するためにjava.vm.nameプロパティを照会できクライアントとサーバーの間のモード。ホットスポットでは、そのオプションを使用した場合は「サーバー」が含まれます(たとえば、Java HotSpot(TM) 64-Bit Server VM)。 this pageによると

ティアードコンパイルは今、サーバVMのデフォルトモードです。

注:現在は機能していますが、将来的には最も確実なアプローチではありません。

0

どのJITコンパイラが使用されているかを判断するためのやや良い方法です。 32ビットJDK8たWindowsマシン上で

 
    $ java -version 
    java version "1.8.0" 
    Java(TM) SE Runtime Environment (build 1.8.0-b132) 
    Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode) 

    $ java -XshowSettings -version 2>&1 | grep sun.management.compiler 
     sun.management.compiler = HotSpot Client Compiler 

    $ java -server -XshowSettings -version 2>&1 | grep sun.management.compiler 
     sun.management.compiler = HotSpot Tiered Compilers 

だから、クライアントコンパイラは、Windows 32ビットJDK8 と「-server」オプションがあなたに32ビット階層を取得すると、デフォルトでコンパイラ。 64ビットJDK8たWindowsマシン上で

 
    $ java -version 
    java version "1.8.0" 
    Java(TM) SE Runtime Environment (build 1.8.0-b132) 
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode) 

    $ java -XshowSettings -version 2>&1 | grep sun.management.compiler 
     sun.management.compiler = HotSpot 64-Bit Tiered Compilers 

だから、階層型コンパイラは、Windows 64ビットJDK8とデフォルトです。 Oracleは64ビットクライアントVMを提供していません。

関連する問題