【JVM】把Class加载到内存要几步

大纲

  • class文件如何load到内存
    • 类加载器
    • 双亲委派
      • 缓存&找不到返回null
        • 多次加载class还是同一个
      • Tomcat打破双亲委派
        • 自己加载自己的class,不委托上级的类加载器 - 加载web应用
      • SPI打破双亲委派
        • 上级加载器委托下级的类加载器去加载class - jdbc
    • 实现自己的类加载器
      • 重写findClass方法 可以加载指定路径的class文件
        • 加密class
      • 重写loadClass方法 可以打破双亲委派机制
        • 热部署
          • 不去委托父类加载,每次自己再加载一次
  • 创建一个class对象放在堆空间
  • 配合反射使用
    • 动态创建类或者修改属性
  • 何时发生类加载
    • 未规定
  • linking
    • verification
    • preparation
    • resolution - 将符号引用解析成直接引用
      • 在class编译时期并不能知道引用的对象在内存中的地址,所以只能暂时用特定的符号表示
  • initializing  
    • 一个面试题理解static加载有顺序
原文地址:https://www.cnblogs.com/nightOfStreet/p/13301873.html