HotSpot JavaのVM引数の呼び出しが-client、-server、または階層化されたコンパイルオプションで実行されているかどうかを知りたいと思います。 VM引数を指定しない場合、デフォルトでどちらが選択されますか? JITコンパイラが実行されている診断を出力する方法はありますか?これはホットスポットであると仮定すると、実行中のJava HotSpot JITコンパイラはどれですか?
10
A
答えて
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
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を提供していません。
関連する問題
- 1. HotSpot JIT、デッドコードの除去と副作用?
- 2. JavaのJITコンパイラは簡単なループを "拡張"しますか?
- 3. JITコンパイラをオフにする
- 4. コンパイラを実装するJavaのクラスはどれですか?
- 5. JavaはいつJITコンパイラを取得しましたか?
- 6. .NET JITコンパイラはどのような条件下で自動ベクトル化を実行しますか?
- 7. C2 JITコンパイラによってJavaループの述語の最適化がトリガされるのはいつですか?
- 8. C#コンパイラまたはJITのどのレベルでアプリケーションコードを最適化しますか?
- 9. C#JITコンパイラはヌルチェックを最適化しますか?
- 10. .NETCF JITコンパイラのネイティブコードバイトの表示方法
- 11. ヘッドファーストJava、第16章、コンパイラの実行クエリ
- 12. HotSpotでのRunnableのコスト
- 13. JITコンパイラがJavaでオフになっているかどうかを確認する方法
- 14. CLR言語の最適化。言語コンパイラVS JITコンパイラ
- 15. Javaはジャストインタイムコンパイラ(JIT)か、Javaでプログラマがコンパイルしたものです。
- 16. JAVA:インタプリタまたはコンパイラ? Javaのファイル拡張子ですか?どのように実行する?
- 17. Javaコンパイラの実装
- 18. JITコンパイルメソッドを試みています。AOT専用モードで実行中のクラス:.ctor() '
- 19. Ocamlで書かれたJavaコンパイラの「リンク中のエラー」
- 20. このコードはどのようにコンパイラで実行されますか?
- 21. Java実行中エラー
- 22. Javaでバットファイルを実行中
- 23. Java、アサーション、JIT
- 24. java実行中のLinuxコマンド
- 25. Java JITコンパイラはメソッドの呼び出しを副作用なしで削除しますか?
- 26. HaskellのJust In Time(JIT)コンパイラを書くことは可能ですか?
- 27. 実行中のJavaアプリケーション
- 28. Javaからの実行中のbashスクリプト
- 29. Javaスレッドはどのプロセッサで実行されていますか?
- 30. JITを使わないでプログラムを実行するには?
ありがとうございました。私はOS XでHotspotを実行していますが、Java 1.6&1.7ではオプションが認識されていません。 –
@JulienChastang:これは奇妙なことです.WindowsとLinuxの両方でうまくいきます。 'java -X'は何を表示しますか? –
私の悪いです。実際には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からこれについていくらか明確にすることは良いことです。 –