これらの用語が使用されていると聞きましたが、Javaフレームワークのどこにそれらがすべて適合するかについてのトップレベルのビューを見つけることができないようです。JITがコンパイルメカニズムであることは知っていますが、JVMの一部ですか?ホットスポットとは何ですか?新しいタイプのVMですか?
3 に答える
JITは「ジャストインタイム」コンパイルであり、基本的にはオンザフライでコンパイルされます。
ホットスポットは、実際に使用されているコードのみをコンパイルするJVM内の概念です。つまり、「ホット」なコードが何度も使用されています。
JVMは使用状況を追跡し、何かが十分に普及すると、コードの解釈を続けながら、コンパイルのためにそのコードをキューに入れます。
JITが終了すると、解釈されたビットがコンパイルされたビットと交換されます。
これが、JVMがベンチマークなどのために「ウォームアップ」する必要がある理由です。
Sun / Oracle JVMの-serverおよび-clientオプションは、JIT作業を行うときの攻撃性に関してこの動作に影響を与えます。
JVMは仕様です。さまざまなベンダーが仕様を実装しています。例: Sun (現在の Oracle)、IBM、BEA (現在の Oracle)、SAP はすべて仕様を実装し、独自の JVM を提供しています。Sun の特定の実装は Hotspot と呼ばれます。BEA は JRockit と呼ばれます。
JIT は JVM の一部であり、Java バイトコードを取得して、プログラムが実行されているマシン上でネイティブ プロセッサ アセンブリ コードにコンパイルします。各ベンダーは、独自の洗練されたアルゴリズムを活用して JIT を実装しています。例: JRockit の JIT は Hotspot の JIT とは異なります。
HotSpot は、特定の JVM の名前です。現在のほとんどの JVM と同様に JIT コンパイラを備えていますが、JVM に JIT コンパイラがあるかどうかは (かなり広く、公然と宣伝されており、重要ですが、それでも) 実装の詳細です。JIT コンパイラーを使用しない Java 実装があり、それらは標準に準拠していました。
「ホット スポット」は、頻繁に呼び出されるか、または実行に不釣り合いに時間がかかるコードの一部でもあります (多くの JIT と同様に、「ホット スポット」を高速化することを目的としているため、JVM の名前の由来はおそらくこれにあります)。特に)。