java - 类加载后隔离问题
巴扎黑
巴扎黑 2017-04-18 09:45:42
0
3
376

我知道在JVM识别类的方式是通过classLoader和全类名识别的,那么当一个类由两个不同的classLoader加载后。
对这个类初始化时,JVM会选择对哪个类进行初始化?其依据是什么?
两个classLoader加载的Class对象在内存中的位置有什么区别吗?

例如:

有人提出看工程结构,我把加载器和被加载对象的结构放出来吧:


被加载的类也是在classpath下的

巴扎黑
巴扎黑

全員に返信(3)
阿神

簡単に言うと:

リーリー

詳細については、検索エンジンで「親の委任モデル」というキーワードを検索してください。

いいねを押す +0
Ty80

話は逸れましたが、このコードは非常にきちんとしていて快適に見えると思います

いいねを押す +0
PHPzhong

ここでの初期化は、クラスのロード (<clinit> の呼び出し) の最後のステップとして理解できます。2 つの異なる ClassLoad がロードされた場合、<clinit> が 2 回実行され、ロードされた Class オブジェクトがメソッド内にあります。 (永続的な世代)、2 つの Class オブジェクトに対応します。

メソッド コードがオーバーロードされている場合、最終結果は 2 つの findClass になります。true ファイルは最終的に class の下にあるため、AppLoader に渡されてロードされます。エフェクトを表示する必要がある場合は、classpath ファイルを class 以外の場所に移動する必要があります。元の投稿者は classpath メソッド loadClass をオーバーロードしました。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート