复工!

寒假1月7日到家,刚刚开始在凌晨还勤奋的学习的几天,学了大概十几个小时的JVM,然后就开启了一整个寒假的摆烂......不过从今天开始,继续学习!!!

关于双亲委派机制

今天在复习JVM的时候,又看到了类加载的双亲委派机制。

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式

  1. 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;

  2. 如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器;

  3. 如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式。

  4. 父类加载器一层一层往下分配任务,如果子类加载器能加载,则加载此类,如果将加载任务分配至系统类加载器也无法加载此类,则抛出异常

这个貌似只有父子合作的机制被称之为双亲委派机制,从学习JavaSE的时候,就一直牢记这个名词,但是对概念却一直很模糊。

我个人觉得这可能是翻译的锅,将parents翻译为双亲,而本意应该是亲子委派机制。

如果这个名词是亲子委派机制,那么其原理简直一目了然。