jvmクラスローダーの3つのプロセス
1.ロード
通过一个类的全限定名获取此类的二进制字节流
。このバイトストリームで表される静的ストレージ構造をメソッド領域のランタイムデータ構造に変換する。メソッド領域
でこのクラスのさまざまなデータのアクセスエントリとしてメモリ内にこのクラスを表すクラスオブジェクトを生成する
2.リンク
验证
确保class文件符合当前虚拟机的要求
准备
为类变量分配内存,并设置类变量的初始值,不会给实列变量初始化
解析
将类的符号引用转化为实际引用
3.初期化
初期化プロセスは、クラスコンストラクターメソッド<clinit()>メソッドを実行するプロセスです。javacコンパイラーは、クラス内のすべての変数の割り当てアクションを自動的に収集し、それらを静的コードブロック内のステートメントとマージします。
コンストラクターメソッド内の命令は元のファイルにあります出現順序が実行され
ます。clinit()はクラスコンストラクターとは異なり
ます。仮想マシンは、クラスのメソッドが1回だけ実行されるようにする必要があります