クラスローディングが降順で起こっている間に、ClassLoaderのキャッシュが昇順でチェックされるのはなぜですか? ClassLoaderのキャッシュが昇順でチェックされているのはなぜですか?
答えて
JavaのClassLoaderは、委譲、可視性、一意性の3つの原則で動作します。委任原則クラスロードの要求を親クラスローダーに転送し、親クラスがクラスを見つけたりロードできなかった場合にのみクラスをロードします。可視性の原則により、子クラスローダーは親ClassLoaderによってロードされたすべてのクラスを参照できますが、親クラスローダーは子によってロードされたクラスを見ることができません。一意性の原則では、クラスを一度だけロードすることができます。これは、基本的に委譲によって実現され、子ClassLoaderがすでに親によってロードされたクラスをリロードしないようにします。言い換えれば
hereを説明した:Javaで
クラスローダはツリーに編成されています。リクエストによって、クラス ローダーは、クラスがすでにロードされているかどうかを、 が自身のキャッシュで調べます。クラスがキャッシュに存在する場合、 CLはクラスを返し、そうでなければ、要求を親に委譲します。 親が設定されていない(Nullである)か、クラスをロードできず、 がClassNotFoundExceptionをスローした場合、クラスローダーは クラス自体をロードしようとし、クラスファイルの独自のパスを検索します。クラス がロード可能な場合はそれが返され、そうでない場合はClassNotFoundException がスローされます。 キャッシュルックアップは、ツリールートに達するか、またはクラスがキャッシュ内に見つかるまで、子から の親に再帰的に行きます。 ルートに達すると、クラスローダはクラスをロードしようとし、 は親から子への再帰を展開します。
- キャッシュ
- 親
- 自己
このメカニズムは、クラスがに最も近いクラスローダによってロードされる傾向があることを保証:我々は 次の順序を持っていることをまとめますルート。
これは純粋に効率の問題です。キャッシュを忘れてしまった場合、クラスロードの順序では、Javaシステムクラスが常にアプリケーションクラスより優先され、クラスはチェーン内の1つのクラスローダーによってのみロードできることが保証されます。したがって、複数のキャッシュにあるクラスがないため、キャッシュを検索する順序で機能的な違いはありません。
つまり、拡張クラスローダーキャッシュとそれに続くシステムクラスローダーキャッシュを検索してから、クラスをロードしようとすると、結果がまったく同じになります。これを行うには、ロードされたクラスを検索するために余分なAPIが必要になり、キャッシュの検索が非常に迅速な操作であるため、ほとんど効果がありません。
クラスは複数のクラスローダーによってロードできますが、ローダー→親チェーン内にあるクラスではないことに注意してください。
- 1. 配列が昇順であるか昇順でないかの配列
- 2. キャッシュがフラッシュされています、なぜですか?
- 3. Touchイベントの横にマウスイベントが昇格されるのはなぜですか?
- 4. キャッシュされないのはなぜですか?
- 5. J2MEでチェックボックスがチェックされているかチェックされていないかをチェックする方法は?
- 6. なぜアンドロイドWebviewはデフォルトでキャッシュをチェックしないのですか?
- 7. 私のtastypieキャッシュが呼び出されないのはなぜですか?
- 8. 私の最初のラジオボタンがチェックされないのはなぜですか?
- 9. なぜPythonマルチプロセッシングが順番に実行されているのですか?
- 10. Clojureはチェックされていない例外を含むチェック例外をなぜラップするのですか?
- 11. Jquery Trackingチェックボックスがチェックされていないか、チェックされていないかチェックされていない
- 12. 私のアプリのすべてのRazor Viewsがキャッシュされているのはなぜですか?
- 13. なぜwindow.nameがキャッシュされていますか?
- 14. 高速構文解析クエリでオブジェクトが昇順に返されない
- 15. C/C++で式の評価順序が定義されていないのはなぜですか?
- 16. 昇順でのソート - sort()
- 17. Linqの結果を昇順で昇順に並べ替えてから降順に並べ替える
- 18. knockoutJsのチェックボックスがチェックされている場合にのみ書き込まれるのはなぜですか?
- 19. なぜ正しい順列が返されないのですか?
- 20. なぜJSON例外がアンドロイドにキャッシュされないのですか?
- 21. なぜアウトラインビューのチェックボックスが1つしかクリックされていないときにチェックするのですか?
- 22. Firefox/Firebugでキャッシュされた画像が表示されないのはなぜですか?
- 23. SQL Serverインデックス - 昇順または降順ですが、どのような違いがありますか?
- 24. PL/SQLでNULL結合配列がチェックされていないのはなぜですか?
- 25. djangoテンプレートでどのチェックボックスがチェックされているのかチェックされていないのをチェックするのですか?
- 26. 正確な行をすべての行の先頭に移動する他のすべての行を昇順に昇順昇順
- 27. BindingListCollectionViewが封印されているのはなぜですか?
- 28. mp3が圧縮されているのはなぜですか?
- 29. WebSocketsがマスクされているのはなぜですか?
- 30. Regex Groupが返されているのはなぜですか?