クラスの完全修飾名 (パッケージ名とクラス名) を使用してクラスを取得します。 ) .class ファイル、メタスペースにロードされます。
検証:.class ファイルのセキュリティを確認してください
準備:静的型変数にメモリを割り当て、デフォルト値を設定します
解析:定数プール内のシンボル参照をダイレクトに変換しますReferences の場合、シンボル参照がアンロードされたクラス、またはアンロードされたクラスのフィールドまたはメソッドを指している場合、解析によってこのクラスのロードがトリガーされます。実行クラス コンストラクター メソッド init
() プロセスは、クラスに親クラスがある場合、2. クラスローダー
開始クラスローダー
開始クラスローダーはC/C言語で実装されており、Javaをロードするために使用されます。コアクラスライブラリ。スタートアップ クラスは、パッケージ名が java、javax、および sun で始まるクラスのみをロードします。
親クラス ローダーは、スタートアップ クラス ローダー
です。java.ext.dirsDirectory
親クラス ローダーは
開始クラス ローダー
システム プロパティのロードを担当します。 java .class.path
指定されたパスの下のクラス ライブラリは、プログラムのデフォルトのクラス ローダーであり、Java プログラムのすべてのクラスはそれによってロードされます。 カスタム クラス ローダーjava.lang.ClassLoader
クラスを継承し、findClass() メソッドをオーバーライドします。あまり複雑な要件がない場合は、
URLClassLoader クラスを直接継承し、
loadClass
関数暗号化:
非標準ソースからコードをロードする: バイトコードがデータベースまたはクラウドに配置されている場合は、指定されたソースからクラスをロードするようにクラス ローダーをカスタマイズできます。
親委任モデル
jvm は、クラス ファイルのオンデマンド ロード メソッドを使用します。クラスを使用する必要がある場合、jvm はそのクラス ファイルをロードします。クラスの生成メモリ内のオブジェクト。クラスをロードするときは、 クラスローディング リクエストを受信した場合、最初にロードせず、リクエストを
に委任します。実行する親クラスローダー
#親クラスにまだ親クラス ローダーがある場合は、クラス ローダーを開始する: Bootstrap ClassLoader
# まで上向きに委譲を続けます。
親クラス ローダーがロード タスクを完了できれば、成功した結果が返されます。親クラスがロードに失敗した場合、サブクラスは独自にロードを試行します。サブクラスがロードに失敗した場合は、 # がスローされます。 ##ClassNotFoundException
例外、これは
#Usage:
メソッド:
コンテキスト クラス ローダーを使用します
以上がJava クラスローダーとクラスロードプロセスの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。