关于jvm之类别载入器

刚看完java深度历险的第二章,作一总结.

当一个程序编译完成提交jvm运行时,先启动虚拟机,生成第一个类装载器bootstrp loader(这个类装载器是c++写的代码,所以严格来说它并不是一个类),之后载入位于sun.misc 下launcher.java里的ExtClassLoader设定其parent为Null 即Bootstrp Loader,之后Bootstrp Loader要求载入sun.misc下launcher.java里的AppClassLoader设定其parent为ExtClassLoader.当载入自己写的class时先由提交AppClassLoader,AppClassLoader提交其parent classloader,继续向上提交直到Bootstrp Loader然后先由Bootstrp loader在jre目录下的classes里寻找,不能则返回其子classLoader  ExtClassLoader在jre\lib\ext目录下的classes寻找,不能则返回其子ClassLoader  AppClassLoader在当前工作目录寻找再不能找到就会抛出NoClassDefFoundError...

这也就是类装载器的阶层体系,类装载器的委派模式

你可能感兴趣的:(jvm,c,虚拟机,ext,sun)