黑马程序员技术交流社区
标题:
JVM查询类的原理
[打印本页]
作者:
xplcc
时间:
2014-9-16 22:43
标题:
JVM查询类的原理
JVM
去查询类的原理,编译器加载类要依靠
classloader
,
而
classloader
有
3
个级别,从高到低分别是
BootClassLoader(
名字可能不准确
) , ExtClassLoader, AppClassLoader.
这
3
个加载器分别对应着编译器去寻找类文件的优先级别和不同的路径:
BootClassLoader
对应
jre/classes
路径,是编译器最优先寻找
class
的地方
ExtClassLoader
对应
jre/lib/ext
路径,是编译器次优先寻找
class
的地方
AppClassLoader
对应当前路径,所以也是编译器默认找
class
的地方
其实大家可以自己写个程序简单的测试,对任何
class
,例如
A,
调用
new A().getClass().getClassLoader().toString()
打印出来就可以看到,把
class
文件放在不同的路径下再次执行,就会看到区别。特别注意的是如果打印出来是
null
就表示到了最高级
BootClassLoader,
因为它是
C++
编写的,不存在
Java
对应的类加载器的名字。
寻找的顺序是一种向上迂回的思想,即如果本级别找不到,就只能去本级别之上的找,不会向下寻找。不过似乎从
Jdk1.4
到
Jdk1.6
这一特点又有改变,没有找到详细资料。所以就不举例子了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2