jvm装在一个子类型并递归装载父类型是同一个类装载器装载么?
all_wmh
2011-07-01
假设要装载类型A,A的继承结构( -> 代表 extends)
A -> B -> C -> java.lang.Object 前提条件: 1.当前装载器是L,A,B,C,D还没被任何类装载器装载 2.类型A的定义类装载器是 La 3.类型B的定义类装载器是 Lb 4.类型C的定义类装载器是 Lc 5.类型java.lang.Object的定义类装载器是启动类装载器 那么我想问下这个时候 La是B,C,java.lang.Object的初始类装载器么? |
|
all_wmh
2011-07-01
PS:
书上看到的是 1、当解析一个指向CONSTANT_Class_info的符号引用的时候,会用当前类装载器去装载CONSTANT_Class_info指向CONSTANT_String_info的全限定名的类型。 2、当递归解析子类型的超类或者超接口的时候,会用装载子类型的类装载器去解析超类或者超接口。 感觉挺矛盾的,谁能帮忙解答下么? |
|
RednaxelaFX
2011-07-01
all_wmh 写道 La是B,C,java.lang.Object的初始类装载器么?
嗯,如果能成功加载的话,La会是这组B和C和java.lang.Object的initiating class loader 一个类的initiating class loader可以有任意多个,只要在同一条loadClass的链上;当然,其中不包括未能成功加载的那些class loader了。 |
|
all_wmh
2011-07-01
谢谢 撒迦
|