序文:
このシステムでは、テクノロジシステム、開発履歴、Javaの仮想マシンファミリ、およびJDKを自分でコンパイルする方法を紹介します。
1.Javaテクノロジーシステム
-
JDK:Javaプログラミング言語の3つの部分、Java仮想マシン、およびJavaクラスライブラリは、まとめてJDK(Java Development Kit)と呼ばれ、Javaプログラムの開発をサポートするために使用される最小の環境です。
-
JRE:Java SE APIサブセットの2つの部分とJavaタイプAPIのJava仮想マシンは、Javaプログラムの実行をサポートする標準環境であるJRE(Javaランタイム環境)と総称されます。
2. Java仮想マシンファミリ(一度コンパイルすると、どこでも実行できます)
-
クラシックVM:「世界初の商用Java仮想マシン」であるこの仮想マシンは、純粋なインタープリターのみを使用してJavaコードを実行できます。ジャストインタイムコンパイラがプラグインされている場合、ジャストインタイムコンパイラは仮想マシンの実行システムを完全に引き継ぎ、インタプリタは機能しなくなります。
-
Exact VM:Exact Memory Managementを使用していることから名付けられた、Exact VMは、ClassicVMの以前のハンドルベースのオブジェクト検索方法を放棄できます。
-
HotSpot VM:ClassicVMとExactVMの利点(正確なメモリ管理など)を継承し、独自の新しいテクノロジー、ホットコード検出テクノロジーなども備えています。(追記:ホットコード検出機能は、実行カウンターを介してコンパイルに最も価値のあるコードを見つけることができます。メソッドが頻繁に呼び出される場合、またはメソッドに多くの効果的なループがある場合、標準のジャストインタイムコンパイル以降がトリガーされます。 -それぞれスタック置換コンパイル動作)
-
JRockit VM:サーバーハードウェアおよびサーバー側アプリケーションのシナリオ向けに高度に最適化された仮想マシン。プログラムの起動速度にあまり注意を払うことができないため、JRockitにはインタープリターの実装が含まれておらず、すべてのコードは実行後に実行されます。ジャストインタイムコンパイラによってコンパイルされます。
-
IBM J9 VM:IBM J9は今日でも非常に活発であり、IBMJ9仮想マシンの職務の分離とモジュール性はHotSpotよりも優れています。
-
Zing VM:Zing仮想マシンは、HotSpotの古いバージョンのコードブランチから独立して再開された高性能のJava仮想マシンです。Azulは、そのための新しいガベージコレクターを作成し、HopSpotの多くの実装の詳細も変更しました。これは、低遅延と高速ウォームアップが必要なシナリオでHotSpotよりも優れたパフォーマンスを発揮します。ZingのPGCおよびC4コレクターは、テラバイトのJavaヒープメモリを簡単にサポートでき、一時停止時間を10ミリ秒以下の範囲内に維持できることを保証します。
3.新世代のジャストインタイムコンパイラ
十分な予熱のために長時間実行する必要があるアプリケーションの場合、ホットスポットコードはHotSpotの検出メカニズムによって正確に特定およびキャプチャされ、物理ハードウェアで直接実行できるマシンコードにコンパイルされます。このタイプではアプリケーションの場合、Javaコードの運用効率は、ジャストインタイムコンパイラによって出力されるコードの品質に大きく依存します。
-
HotSpot仮想マシンには2つのジャストインタイムコンパイラが含まれています。それらは、コンパイルに時間がかかりますが出力コードの最適化が低いクライアント側コンパイラ(C1)と、サーバー側コンパイラ(C1)です。コンパイルには長い時間がかかりますが、出力コードの最適化品質が高くなります。C2)。
-
新世代のジャストインタイムコンパイラ:Graalコンパイラ。Graalコンパイラーはサーバーサイドコンパイラーより20年遅れてリリースされ、非常に遅いという利点があります。同様の品質のコンパイル済みコードの出力を維持しながら、開発効率とスケーラビリティの点でC2コンパイルよりも大幅に優れています。これにより、C2コンパイラの優れたコードテクノロジをGraalコンパイラに簡単に移植できることがわかりますが、Graalコンパイラの効果的な最適化をC2コンパイラに実装することは非常に困難です。一部のテスト項目では、C2コンパイラを徐々に追い抜いてきました。Graalは、「部分エスケープ分析」(部分エスケープ分析)など、C2よりも複雑な最適化を行うことができますが、C2よりも積極的な予測最適化戦略を使用する方が簡単で、カスタム予測仮定をサポートします。
4.この章の質問
- インタプリタとジャストインタイムコンパイラとは何ですか
- ユーザーモードとカーネルモードとは