JVM は親委任モデルを通じてクラスをロードします。つまり、クラス ローダーはクラスのロード要求を受け取ると、まずロード タスクを親クラス ローダーに再帰的に委任します。親クラスローダーがクラスロードタスクを完了できる場合、正常に戻ります。親クラス ローダーがこの読み込みタスクを完了できない場合にのみ、クラス ローダー自体が読み込みます。 クラスローダー
概要: クラス ローダーとバイトコードは、Java プラットフォームの独立性の基礎となります。どのクラスでも、そのクラス ローダーとクラス自体が連携して、Java 仮想マシン内での一意性を確立する必要があります。 親委任モデルの利点:
クラスのロードプロセスクラスのライフ サイクルは次の 7 つの段階を経ます。 ロードフェーズ このステージは、対応するクラスを見つけ (クラス名で検索)、このクラスのバイト ストリームをメソッド領域ランタイムのデータ構造に変換し、他のデータにアクセスするためのエントリ ポイントとしてメモリ内でこのクラスを表すことができる java.lang.Class オブジェクトを生成するために使用されます。 検証フェーズ このステップは主にバイトコードのセキュリティを検証するためのものです。セキュリティ チェックが実行されないと、安全でないバイトコードや誤ったバイトコードがロードされ、システムがクラッシュする可能性があります。これは JVM の自己保護のための重要な対策です。 検証の主なアクションは次のとおりです。
準備 このステージは、クラスで定義された静的変数のメモリを初期化して割り当てるために使用されます。これらの静的変数はメソッド領域に割り当てられます。 JDK 1.7 より前では HotSpot 仮想マシンはメソッド領域にありますが、JDK 1.8 以降ではこの変数はクラス オブジェクトとともに Java ヒープ内に格納されます。 解析フェーズ このステージは主に、クラス、インターフェース、フィールド、メソッドを解析するために使用されます。解析中に、シンボリック参照は直接参照に置き換えられます。 シンボリック参照は、参照先を記述するために使用されるシンボルのセットです。シンボルは、使用時にターゲットを明確に特定できる限り、任意の形式のリテラルにすることができます。直接参照は、ターゲットを直接指すポインター、相対オフセット、または間接的にターゲットを特定できるハンドルです。 シンボリック参照と直接参照には重要な違いがあります。シンボリック参照を使用する場合、参照先は必ずしもメモリにロードされるわけではありません。直接参照を使用する場合、参照先ターゲットは仮想マシンのメモリ内にすでに存在している必要があります。 初期化 初期化フェーズでは、JVM はクラスに記述された Java ビジネス コードを正式に実行し始めます。このステップの後、クラスのロードプロセスは正式に完了します。 要約する上の図に示すように、2 つの明るい緑色の部分はクラスのライフ サイクルを表します。これは、クラスのロードからクラス インスタンスの作成と使用、そして使用されなくなったクラス オブジェクトが GC によってアンロードされ、リサイクルされるまでのプロセスです。 ここで注意すべき点は、Java 仮想マシンに付属する 3 つのクラス ローダーによってロードされたクラスは、仮想マシンのライフ サイクル全体を通じてアンロードされないことです。ユーザー定義のクラスローダーによってロードされたクラスのみをアンロードできます。 |
<<: Curl を使用して Kubernetes をデバッグする!
>>: IDC:中国の産業用クラウド市場規模は2020年後半に23億ドルに達する見込み
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています6月26日...
Dedicubeは設立してまだ半年も経っていないサーバーレンタル会社です。1ヶ月前にサイトにカウント...
コンセプトPodman は、Open Container Initiative (OCI) コンテナ...
この記事の著者は、現在主流となっている分散アーキテクチャ、分散アーキテクチャにおける一般的な理論、お...
お金を節約し、検索エンジンのランキングを独占するために、一部のウェブマスターは、1つの業界向けに複数...
企業ウェブサイトの構築と公開が完了したら、メンテナンスとプロモーションを開始します。このとき、ウェブ...
1. ユーザーの真のニーズは何ですか?検索エンジンのユーザーが入力するクエリは非常に短く、平均クエリ...
杜湖渓谷コンテスト、杜孤コンテスト、あるいは最近のプーアル茶コンテストなど、ますます多くの SEO ...
友達と外食するとき、街のホテルの食事はどんどん悪くなっているとよく言われます。おいしいおやつを食べた...
[編集者注] クラウドネイティブ時代の到来は Java 開発者とどのような関係があるのでしょうか?ク...
App Store 最適化 (ASO) は、アプリを見つけやすくし、ダウンロードしてもらうための一連...
分析は iOS クライアント バージョンに基づいています。斗魚V2.450パンダV2.2.6.158...
企業のウェブサイトの場合、SEO の細部に注意を払うことが非常に重要です。特に現在、多くの企業はウェ...
これは、Google のエンジニアリング担当副社長でありランキングアルゴリズムの責任者である Udi...
私は、オンライン求人ビジネスに3年間携わってきました。長すぎず短すぎず、それ以前に携わっていたECサ...