【HotSpot仮想マシンの理解】クラスのロードメカニズム


転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73555233
1概要
仮想マシン仕様では、定義されたクラス(classファイル)が仮想マシンによってメモリにロードされ、3つのプロセスが経過しました.
  • ロード(Loading)
  • 接続(Linking)
  • 検証(Verification)
  • 準備(Preparation)
  • 解析(Resolution)
  • 初期化(Initialization)
  • その後、このクラスは使用されます.
  • インスタンス化(Instantiation)
  • 次に、クラスのロードメカニズムを次のクラスで説明します.
    public class ClassDemo {
    
        public static int a = 1;
    
        static {
            System.out.println("initialized");
        }
    
        public int b = 2;
    
        public ClassDemo() {
            System.out.println("constructed");
        }
    }

    2ロード
  • クラスの全制限名に従ってclassファイルを見つけ、classファイルバイナリデータストリーム
  • を形成する
  • 初歩検査、例えばclassファイルの魔数、主次バージョン番号、アクセスIDなど
  • このバイナリデータストリームをinstanceKlassオブジェクトとして解析し、メソッド領域に保存する
  • このタイプのjavaを作成する.lang.Classインスタンス、スタックに保存
  • 【理解HotSpot虚拟机】类的加载机制_第1张图片
    3接続
    3.1検証
    検証は接続の最初のステップであり、検証は4つのフェーズに分けられます.
  • ファイルフォーマット検証(前のステップ:ロードで実装)
  • メタデータ検証
  • バイトコード検証
  • シンボル参照検証
  • 詳細については、「仮想マシン仕様」と「Java仮想マシンの理解」を参照してください.
    このステップのメソッド領域とスタック領域には変化はありません.
    3.2準備
    準備フェーズは、クラス変数(静的変数)にメモリを割り当て、静的変数にデフォルトの初期値を割り当てます.インスタンス変数ではありません.
    デフォルトの初期値は次のとおりです.
    データ型
    デフォルト初期値
    データ型
    デフォルト初期値
    int
    0
    boolean
    false
    long
    0L
    float
    0.0f
    short
    (short)0
    double
    0.0
    char
    ‘\u0000’
    reference
    null
    byte
    (byte)0
    【理解HotSpot虚拟机】类的加载机制_第2张图片
    3.3解析
    解析は、仮想マシンが定数プール内のシンボル参照を直接参照に置き換え、直接参照は、ターゲットへのポインタ、相対オフセット、ターゲットに位置決めできるハンドルであってもよい.
    【理解HotSpot虚拟机】类的加载机制_第3张图片
    4初期化
    クラス変数に指定された初期値を付与し、初期化フェーズはクラスコンストラクタ()メソッドを実行するプロセスであり、()メソッドはコンパイラによって順次収集される
  • 静的変数の付与動作
  • 静的文ブロック内の文
  • 【理解HotSpot虚拟机】类的加载机制_第4张图片
    5インスタンス化
    クラスのオブジェクトインスタンスを作成します.インスタンス化は、クラスの初期化後、スタックにクラスを作成するオブジェクトです.
    クラスの初期化は、祖先クラスからサブクラスに、出現順にクラス変数の初期化文、静的初期化文ブロックを順次初期化します.クラスインスタンスの初期化も同様で、祖先クラスからサブクラスまで、出現順にクラスメンバーの初期化文、インスタンス初期化ブロック、構築方法を順次初期化します.
    【理解HotSpot虚拟机】类的加载机制_第5张图片
    転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73555233