Java——类的加载机制

类的加载机制

类的生命周期

加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载

加载:

  1. 获取类的二进制字节流
  2. 静态储存区转为数据结构
  3. 生成一个Class对象,作为方法区各种数据的访问入口

验证:

  1. 文件格式验证
  2. 版本验证
  3. 元数据验证
  4. 字节码验证
  5. 符号引用验证

准备:

  1. 为变量分配内存空间,设置初始值

解析:

  1. 符号引用
  2. 直接引用
  3. 类或接口的解析
  4. 字段解析
  5. 类方法解析
  6. 接口方法解析

初始化:

  1. 类构造器()

类加载器:

  1. Bootstrap ClassLoader
  2. 自定义类加载器

双亲委派模型:
//辣鸡翻译,这里面只有父与子之间的关系,哪来的双亲
简单的说就是如果一个类加载器收到了加载类的指令,自己并不会马上加载,而是先交给父类加载器,只有父类反馈没有加载到,子加载器才会去加载,这样的好处就是保证了Java类型体系的基础,保证了多平台的安全

破坏双亲委派模型:
这个是各种黑科技的基础,热更新热修复
Thread Context ClassLoader(线程上下文类加载器)偷偷开的后门

分享到: