JVM クラスのロードのプロセス: まずロードを実行し、次にクラス ファイルのバイト ストリームに含まれる情報が現在の仮想マシンの要件を満たしていることを確認し、次に静的変数にメモリを割り当てる準備をします。クラスの値を取得してシステムの初期値に初期化し、最終的に解析して初期化します。
#jvm クラスのロード処理:
1. Loading # jvm はロード時に次の 3 つのことを行います。
1) クラスの完全修飾名を通じてクラスのバイナリ バイト ストリームを取得します。
2) このクラスの静的バイト ストリームを変換します。ストレージ構造はメソッド領域で実行時データ構造に変換されます
# 3) クラスのデータへのアクセス入口として、メモリ ヒープ内にクラスを表す java.lang.Class オブジェクトを生成します2. 検証
検証、準備、分析の 3 つのステップは、クラスのバイトコードと JVM の実行状態を結び付ける接続プロセスとみなすことができます
検証では、クラス ファイルのバイト ストリームに含まれる情報が現在の仮想マシンの要件を満たしており、jvm のセキュリティを脅かさないことを確認します。 検証には主に次の検証が含まれます。側面: 1) ファイル形式の検証。バイト ストリームがクラス ファイルの仕様に準拠しているかどうか、および現在のバージョンの仮想マシンで処理できるかどうかを検証します。 2)メタデータ検証、バイトコードで記述された情報のセマンティック分析の実行、Java 言語仕様への準拠の確認# 3) バイトコード検証はデータ フローと制御フロー分析に合格し、セマンティクスが合法的かつ論理的であることを判断します
4) シンボル参照の検証 このチェックは解析中に実行されます 段階が発生します
3. 準備を整え、クラスの静的変数にメモリを割り当て、クラスの初期値に初期化しますシステム。 Final static によって変更された変数の場合、
はユーザー定義の値に直接割り当てられます。次の例のように、準備フェーズ後の初期値は、7
public static int a=7
4 ではなく 0 です。 # 解析とは、定数プール内のシンボル参照を直接参照(物理メモリアドレスポインタなど)に変換することです5. 初期化
初期化段階、jvm が実際に開始します。 クラスで定義された Java コードを実行します。
1) 初期化フェーズは、クラス コンストラクターの 3) 仮想マシンは、クラスの
関連する学習に関する推奨事項:
Java 基本チュートリアル以上がJVMクラスロードのプロセスは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。