jvm类加载

jvm类加载

java类的生命周期

加载、验证、解析、准备、初始化

  1. 加载 查找并加载类的二进制数据
  2. 验证 确保被加载的类符合class文件的格式,java版本号,保证文件能够被正确解析
  3. 准备 为类的成员变量分配内存,初始化静态变量
  4. 解析 把类中的符号引用替换成直接引用
  5. 初始化 对类的变量初始化赋值

jvm的类加载机制

  1. 全盘负责:当一个类加载器负责加载class时,该class所依赖和引用的其他class也将由该类加载器加载除非显示使用另一个类加载器加载
  2. 父类委托:先让父类加载器试图加载,只有在父类加载器在无法加载该类的时候使用子类加载器加载,如果类不存在报classnotfount异常
  3. 缓存机制: 缓存机制保证所有被类加载器加载的class都会被缓存,当程序中需要加载某个class时,类加载器首先从缓存区加载该class,只有在缓存区找不到该class时才从类路径加载二进制数据,并将其转换成class对象,存入缓存区,所以修改了class后,必须重启jvm程序的修改才能生效
  4. 双亲委派模型: 当类加载器收到加载类的请求时,首先委托父类加载器加载,如果父类加载器无法加载,子类加载器才会尝试加载
  5. 三种类加载器 根类加载器 扩展类加载器 系统类加载器
原文地址:https://www.cnblogs.com/cu-later/p/14617033.html