博客开篇——JAVA虚拟机,双亲委派模型

之前学习JAVA都是使用笔记本做笔记,有愧“程序员”一词。最近在温习《深入理解JAVA虚拟机》,相较于年初刚学习JAVA时有了很多不一样的理解,所谓温故而知新。今天简单说一下类加载器的双亲委派模型。

双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会尝试去加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此。只有父类加载器无法完成这个请求时,自类加载器才会尝试自己去加载。

思考:委托机制的意义,即防止内存中出现多份同样的字节码。

比如两个类A和类B都要加载System类:如果不用委托而是自己加载自己的,那么类A就会加载一份System字节码,然后类B又会加载一份System字节码,这样内存中就出现了两份System字节码,它们是不同的,造成体系崩坏。

如果使用委托机制,会递归的向父类查找,也就是首选用Bootstrap尝试加载,如果找不到再向下。这里的System就能在Bootstrap中找到然后加载,如果此时类B也要加载System,也从Bootstrap开始,此时Bootstrap发现已经加载过了System那么直接返回内存中的System即可而不需要重新加载,这样内存中就只有一份System的字节码了。

只是简单说明一下双亲委派模型,希望能够坚持写博客,提升自己的水平。不积硅步无以至千里~

猜你喜欢

转载自blog.csdn.net/lxs1995/article/details/78520500