2

以下の記事を読みました。

http://searchcio-midmarket.techtarget.com/definition/just-in-time-compiler

http://javarevisited.blogspot.in/2011/12/jre-jvm-jdk-jit-in-java-programming.html

私は今、クラスを実行すると何が起こるかを知りたいと思っています。JIT は再度バイト コードをコンパイルし、その後 ???

このコンパイルされたコードは、JVM によって .exe に変換されますか?

4

3 に答える 3

2

他の人が言ったように:JITは、コードがバイナリ実行可能ファイル(.exe)にコンパイルされることを意味するものではありません。ただし、検討する可能性のある興味深いアプリケーションは、Excelsior JETです。

私はそれについてあまり読んでおらず、使用していないので、それがどのように機能するか正確にはわかりません... まだ. しかし、その Web ページによると、これは AOT (Ahead-Of-Time) コンパイラです。これは、.class ファイルをシステム依存のバイナリ ファイルにコンパイルすることを意味します。

あなたはそれを試してみるべきです、それがどのように機能するかを見てください. Web サイトによると、プロジェクトが本質的に非営利の場合、無料のライセンスを取得できます。

于 2012-08-02T06:16:27.127 に答える
0

Java コンパイラは、プレーンテキストの Java コードを JVM バイトコードにコンパイルします。http://en.wikipedia.org/wiki/Java_bytecode

JVM には、「ホット スポット」(基本的には、最も使用されるコード) のコードを評価し、CPU キャッシュを使用するときにそれらのスポットに特別な注意を払う HotSpot オプティマイザーがあります。また、JVM がネイティブ言語 (アセンブリなど) に再コンパイルするためのスポットにフラグを立てることもあり、これは JIT と呼ばれます。

JVM は本質的に、JVM バイトコード インタープリターを実行する仮想マシンです。

直接の .exe はありません。ほとんどの場合、Windows/C/C++ のものです。

于 2012-08-02T05:10:53.757 に答える
0

いいえ、コードは「exe」に「コンパイル」されません

プログラムはバイト コードとしてメモリに格納されますが、現在実行中のコード セグメントは、より高速に実行するために、物理マシン コードに事前にコンパイルされます。

端的に言えば、JIT はインタープリターの一種であり、一般的に使用されるコードの分岐の速度を向上させるように設計されています (少なくとも 10 年前の私の解釈はそうでした)。

JIT コンパイラーは、インタープリターと同様に変換が継続的に行われますが、パフォーマンスの低下を最小限に抑えるために変換されたコードをキャッシュするというハイブリッドなアプローチを表しています。また、開発時に静的にコンパイルされたコードに比べて、レイト バインド データ型の処理やセキュリティ保証を実施する機能など、他の利点もあります。

于 2012-08-02T05:11:02.623 に答える