本帖最后由 翁鹏 于 2013-1-1 22:59 编辑
在java虚拟机中有一个叫 启动类加载器(Bootstrap ClassLoader)的东西, 它是双亲委托模型的顶层加载器,它没有父类加载器,它是根。其余的加载器都有父类加载器的。
双亲委托模型的一般工作过程:一个类加载器收到了类加载的请求,它不会先自己去尝试加载这个类,而是把请求委派给父类加载器,一层一层都是如此, 最终所有请求都会到达顶层启动类加载器,只有当父类加载器反馈自己无法完成这个加载请求,子类加载器才会自己去尝试加载。
这只是一个模型概念,具体实现的时候应该有各方面的优化,可能有点复杂的,但我们不是虚拟机的实现团队,不用管了。
还有就是双亲委派模型只能解决一部分需求,还有一些需求要用其他的类加载器模型实现。
还有一点就是类加载器之间的父子关系不是用继承来实现的,用的是组合关系来实现的。 |