2

私は疑問に思っていました-Javaコードが与えられた場合、Javaコンパイラがそれをどのように最適化するかをどのように確認できますか?

このためのJDKツールはありますか?

ググってみましたが、関連するものは何もありませんでした。

4

4 に答える 4

3

コンパイラが最適化したものを確認するには、たとえばjavapまたはJDを使用してバイトコードを逆コンパイルします。

ジャスト イン タイム コンパイラが最適化したものを確認するには、デバッグ ログを有効にします (逆アセンブルされたマシン コードを読み取ります)。

于 2013-09-15T11:07:39.813 に答える
2

javapコードを逆アセンブルするために使用できます。

javac一般に最適化によってほとんど何もしないことに注意してください。最新の JVM では、Java バイトコードをネイティブ マシン コードに変換するジャストインタイム コンパイラによってほとんどの最適化が行われます。

于 2013-09-15T11:06:55.750 に答える
1

javac最適化があったとしてもごくわずかしか実行しません。

Java での最適化は、ほとんどの場合、実行時に JIT コンパイラーによって行われます。JIT が最適化を実行すればするほど、より良いコードが生成されますが、初期遅延も増加します。

Java ジャストインタイム コンパイラによって生成されたネイティブ コードを取得するには: PrintAssemblyには OpenJDK 7 が必要です。

デバッグ オプション: Java HotSpot VM

-XX:-CITime ---- Prints time spent in JIT Compiler. (Introduced in 1.4.0.)
于 2013-09-15T11:21:28.987 に答える
0

バイトコードを Java コードに戻すツールがあります。コードをコンパイルして.classファイルを取得し、Java コードにリバース エンジニアリングして、最適化を確認できます。

于 2013-09-15T11:05:49.360 に答える