学习

类加载器-双亲委派模型

类加载器

类加载器:负责.class文件(存储的物理文件)加载到内存中,成为一个对象(Class对象)。

类加载时机

  1. 创建类的实例(对象)
  2. 调用类的类方法
  3. 访问类或者接口的类变量,或者为该类变量赋值
  4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
  5. 初始化某个类的子类
  6. 直接使用java.exe命令来运行某个主类
    总结:用到就加载,不用不加载

上述六种情况都会使用到类,所以要把class文件加载进内存

类加载器分类

类加载器-双亲委派模型

类加载机制

  1. 缓存机制:所有加载过的C1ass对象都会被缓存。当程序中需要使用某个Class对象时,类加载器先从缓存区中查找该Class对象,找到直接返回而非重新加载(这就是为什么修改了代码后,必须重新启动JVM程序所做的修改才会生效的原因);找不到才会读取该类对应的class文件二进制数据,并将其转换成Class对象,并存入缓存区中。
  2. 双亲委派:当加载一个类的时候,先让parent(父)类加载器试图查找缓存并加载该class,只有在父类加载器查找失败并无法加载该类时,才尝试从自己的负责的位置中加载该类。

双亲委派的作用

  1. 提高安全性:如果可能,保证某个类优先由根(启动)类加载器加载;继而保证了安全性
  2. 提高性能:某个类,只会被加载一次;节省内存空间的同时,方便维护管理;降低了磁盘IO次数,提高性能。
    类加载器-双亲委派模型

类加载器-双亲委派模型

GL
GL 一个酷爱健身,热爱编程de爱国的小青年

发表评论

已有 2 条评论