この記事では、Java クラスのロード プロセスについて詳しく説明します。これには一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。
Java ファイルのエンコードから最終実行までのプロセス:
#ロードクラス ローダーを介して、さまざまなソースからクラス バイトコード ファイルをメモリにロードします。JVM 仮想マシンは、.class ファイル内のクラス情報をメモリにロードし、それを解析して対応するファイルを生成します。クラスオブジェクト。 JVM は、最初からすべてのクラスをメモリにロードするのではなく、初めて実行する必要があるクラスに遭遇したときにのみ、一度だけロードします。
JVM 達成すべき 3 つのこと
クラス ローダーの開始
検証
検証分類
ファイル形式の検証 (定数かどうかなど)サポートされていない定数はありますか?ファイルに標準以外の情報や追加情報はありますか?デフォルトの初期値
8 つの基本型の初期値、デフォルトは 0シンボル参照: 文字列ですが、この文字列はメソッド、変数、またはクラスを一意に識別できる関連情報を提供します。
直接参照:メモリ アドレスまたはオフセットとして理解されます。 数量
たとえば、メソッド hello() を呼び出します。このメソッドのアドレスは 1234567 です。hello はシンボリック参照、1234567 は直接参照です。
解析フェーズでは、仮想マシンはクラス名、メソッド名、およびフィールド名のシンボリック参照を特定のメモリ アドレスまたはオフセット、つまり直接参照に置き換えます。 ## クラス変数 ( static によって変更された変数またはステートメント) への初期化は、クラス コンストラクターを実行するプロセスです
初期化プロセス
クラスを初期化するとき、その親クラスはまだ初期化されていません。まだ初期化されていない場合、その親クラスが最初に初期化されます- 同時に複数の静的変数と静的コード ブロックが含まれており、上から下の順序で実行されます
以上がJava クラスのロード プロセスの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。