1. Javaファイルの変換
Java ファイルを保存すると、コンパイラはまずそれをクラス ファイルにコンパイルし、次に Java 仮想マシンを通じてクラス ファイルをバイトコード ファイルに変換します。
2. Java 仮想マシンは Java ファイルをどのように実行しますか
まず、Java ファイルが Java 仮想マシンにロードされ、次に仮想マシンはクラスのメタ情報を仮想マシンのメソッド領域に格納します。
バイトコード ファイルは、実行中に機械語命令に変換する必要があります。変換方法は 2 つあります。
- ジャストインタイムコンパイル
- 実行について説明する
解釈: バイトコード命令を 1 行ずつマシン命令に変換します。
ジャストインタイムコンパイル: メソッド内のすべてのバイトコードをメソッド単位でマシンコードにコンパイルします。
ジャストインタイム コンパイルはコンパイルに時間がかかりますが、実行は高速です。解釈実行のコンパイル時間は短いですが、動作が遅くなります。
HotSpot仮想マシンは混合モードを採用しており、まずバイトコードを解釈して実行し、繰り返し実行されるホットスポットコードをメソッドをコードとしてリアルタイムにコンパイルします。
3. ホットデータの第 28 の法則
ジャストインタイム コンパイルは、プログラムが第 28 法則に準拠し、コードの 20% がリソースの 80% を占めるという事実にも基づいています。
多くのリソースを占有しないコードの場合は、解釈して実行することで実行できます。少数のホット コードの場合は、リソースの消費を削減するために、ジャストインタイム コンパイルによってマシン コードに変換して実行できます。