Javaの:class8クラスのロード、リンク初期化段階3

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_43336822/article/details/95599883

負荷
1.javaファイルはバイトコードクラスファイルにコンパイルされているが、ディスクからメモリにロードされたバイトコードのクラスです。

2.ファイルはマジックナンバーをマーク

3.システムは、クラスローダを提供します。

①Boostrapクラスローダ:ブートクラスローダ、メインのjre / libに/ re.jarをロードするには、ディレクトリの下にあるすべてのjarパッケージはjarファイルを実行しているJVMのために必要とされます。psのクラスローダ自体は、したがって、独自のクラスローダは、最上位の親クラスローダを持っている必要があり、明らかに、他のクラスローダを使用する前にロードする必要があり、実際のJavaクラスである(すなわちBootstrapClassLoaderは、クラスローダがありますC.によって開発された)別のクラスローダの親です。クラスは、クラスローダBootstrapClassLoaderであれば、そのクラスのgetClassLoader()メソッドがnullを返します。

②Extensionクラスローダ(内線クラスローダ):拡張クラスローダは、メインコアは、JAVAの拡張クラス、ディレクトリの内線で、すなわち、JRE / libに/ jarファイルをロードされます。

③ApplicationClassLoader(AppClassLoader):アプリケーションクラスローダ、負荷がクラスでアプリケーションを作成するための主要開発者である、それは、CLASSPATHのパス内のすべてのjarファイルです。

4.両親は、プロセス委任モデルを次のように動作します:
(1)現在のクラスローダは、元は彼の既にロードされたクラスから既にロードされたクラスのリターンをロードされている場合などは、ロードされているかどうかを確認してください。
そうでない場合(2)、ロードするために親クラスローダを委任して行きます。親クラスローダは、彼らが戻っは起動に委譲クラスローダまでロードするために親クラスを委託していない、クラスはクラスが含まれてロードされていることを確認するために同じ戦略を使用します。親クラスローダがロードする親クラスローダとしてブートクラスローダの使用に代わって、空の場合ので。(つまり、Stringクラスローダがnullで確認してください)
スローされますが失敗し続け、それがAppClassLoader使用のロードに失敗していきます、ブートクラスローダがロードに失敗した場合(3)、それがロードしようとするために、拡張クラスローダーを使用します。例外にClassNotFoundException。

5.親委任モデルの利点を使用してください:
(1)ユーザーが記述したJavaクラスに対するセキュリティを動的にいくつかのコアクラスを交換してください。両親は仕事の負荷クラスの委譲モデルを読み込む使用しない場合、我々は、動的APIで定義されたコアJavaクラスを置き換えるために、いつでもカスタムクラスを使用することができます。たとえば:Stringクラス定義からそのクラスローダーの中でStringクラスへのハッカー「ウイルスコード」カスタムインプラントは、JVMにロードされている場合、その時間は、JVM上で予期しない「ウイルス」を生成します。そして、Stringクラスは、起動時にされているので、両親はこの状況を回避することができ委任このロードは、ブートストラップクラスローダをロードするために行われます。
(2)JVMは、2つのクラスが同じクラスであるか否かを判断する、それはクラスのか否か同じ名前に応じて決定されるので、繰り返し荷重クラスを回避するだけでなく、クラスローダのクラスをロードするクラスローダが同じで、同じであるかどうかを決定するために必要クラスファイルは、2つの異なるクラスで得られる別のクラスローダの結果です。

2つのクラスが同じであり、同じクラスローダの2つのクラスが前提です。

第二に、リンクは、ステージ
(1)検証:現在のバイト・コード・ファイルは、仮想マシン(マジック番号、バージョン番号...)の要件を満たしている
(2)の調製:方法で初期値割り当てタイプをクラス変数記憶領域を開く
(3 )解析:解析ステージは、直接参照を交換するプロセスへのシンボリック参照の定数プールへの仮想マシンです。

第三に、初期
クラス変数代入します

おすすめ

転載: blog.csdn.net/qq_43336822/article/details/95599883