JVM-双亲委派机制
发布日期:2022-03-15 19:30:59 浏览次数:6 分类:技术文章

本文共 783 字,大约阅读时间需要 2 分钟。

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

工作原理

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

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

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

 (上图中不考虑我们自定义类加载器)

沙箱安全机制

自定义string类,但是在加载自定义String类的时候会率先使用引导类加载器加载,而引导类加载器在加载的过程中会先加载jdk自带的文件(rt.jar包中java\lang\String.class),报错信息说没有main方法,就是因为加载的是rt.jar包中的string类。这样可以保证对java核心源代码的保护,这就是沙箱安全机制。

 在 java.lang 包下整个 ShkStart 类 (自定义类名)

package java.lang;public class ShkStart {    public static void main(String[] args) {        System.out.println("hello!");    }}

 

双亲委派机制的优势

通过上面的例子,我们可以知道,双亲机制可以

  • 避免类的重复加载

  • 保护程序安全,防止核心API被随意篡改

    • 自定义类:java.lang.String

    • 自定义类:java.lang.ShkStart(报错:阻止创建 java.lang开头的类)

转载地址:https://blog.csdn.net/weixin_58104242/article/details/122569872 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JVM-类的加载过程
下一篇:二叉树的旋转

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月22日 14时19分09秒