双亲委派的认识

原创
2019/05/23 14:18
阅读数 47

首先JVM中有三种类加载器

Bootstrap启动类加载器

Extension扩展类加载器(ExtClassLoader

System系统类加载器(Application ClassLoader):是与我们接触对多的类加载器,我们写的代码默认就是由它来加载,ClassLoader.getSystemClassLoader返回的就是它。

某个特定的类接到加载类的请求时候,首先将加载任务委托给父类加载器,依次递归,若是父类加载器可以完成加载,则直接返回成功;若是父类加载器无法完成加载时,才交由自己进行加载。

 

 

双亲委派的意义:

  1. 防止内存中出现重复的字节码,避免类的重复加载:AB均需要加载System类,如果采用双亲委派机制,A类加载了以后,B通过bootstrap去加载的时候,找到了已经被加载过的system类,直接返回成功,不会再次加载
  2. 防止黑客恶意篡改:如果你自己写了一个java.lang.String的类,没有双亲委派的情况下,自己加载了你自己写的这个string类,但是有双亲委派的前提下,会通过bootstrap加载到顶级父类的java核心api里的String类,你写的东西根本没有机会被加载
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部