学习过java语言的小伙们都应该知道双亲委派模型吧,那么你们是否还记得该模型的好处是什么呢?我们应该怎么去理解双亲委派模型呢?
虚拟机类加载机制其实就是:虚拟机把描述类的数据从class文件加载到了内存,并且对数据进行了校验、转换解析和初始化等处理,最终形成了可以被虚拟机直接使用的Java类型。
那么类从被加载到JVM中开始直到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载这七个阶段。
双亲委派模型,即在某个特定的类加载器在接到加载类的请求的时候,首先就将加载任务委托给父类加载器,然后依次递归,如果说父类加载器可以完成类加载的任务,那么就成功返回了;只有父类加载器无法完成此加载任务的时候,才自己去加载的。
使用双亲委派模型的好处就在于Java类随着它的类加载器一起,具备了一种带有优先级的层次关系。比如类java.lang.Object,它存在在rt.jar中的,无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的Bootstrap ClassLoade去r进行加载的,因此Object类在程序的各种类加载器环境中其实都是同一个类。相反,如果说没有双亲委派模型,而是由每个类自行加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,那系统中就将会出现多个不同的Object类的,程序也必将混乱。所以说,如果开发者尝试编写一个与rt.jar类库中重名的Java类,是可以正常编译的,但是永远无法被加载运行。
好了,以上就是本篇文章的所有内容了,还想了解更多java常见问答,记得多多关注本站消息哦。
推荐阅读: