5.双亲委派机制

简介:

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

创建一个和String同包名/同类名的自定义类String,并写上main方法执行,但是执行报错:
在java.lang.String类中找不到main方法,这是为什么呢?
思考:
    按照双亲委派机制可知,当执行main方法时,类加载器会将该类的二进制流加载到内存中,但是双亲委派机制,会将类加载请求给他的上层类加载器,
    最终到启动类加载器进行加载,启动类加载器加载以java,javax,sun开头的类,会将rt.jar包中的java.lang.String.class加载到内存中,但是这个
    String并没有main方法,所以报上述错误
  
  
  
沙箱安全机制
    自定义的String类,但是在加载String类时会率先使用引导类加载器加载,而引导类加载器在加载过程中会先加载JDK自带的文件(rt.jar中的java.lang.string)
    报错信息说没有main方法,就是因为加载的时rt.jar包中的String类,这样就保护了java核心代码
    这就是沙箱机制
  

 

双亲委派机制的优势:

  >避免类的重复加载

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

    

其他补充

posted @ 2022-07-13 21:25  努力的达子  阅读(101)  评论(0编辑  收藏  举报