类生命周期

类生命周期_第1张图片
image.png

类生命周期

类加载机制

  • 加载

获取类二进制流,静态结构转化为方法区的运行时存储结构,内存生成该类的Class对象,作为方法区这个类的各种数据的访问入口

  • 验证

确保该类文件符合JVM要求进行各种验证:文件格式,元数据,字节码,符号引用

  • 准备

方法区内存分配static变量空间,初步原始初始化,不会实例化变量,static final常量会进行初始化数值

  • 解析

将常量池的符号引替换为直接引用过程

  • 初始化

根据表达式初始化

  • 使用
  • 卸载

类加载器

  • 启动类加载器 Bootstrap ClassLoader
  • 扩展类加载器Extension ClassLoader
  • 应用类加载器Application ClassLoader

双亲委派模型

先尝试加载父类,依次向上请求
如果一个类加载器收到了类加载的请求,首先不会自己去尝试加载,而是把这个请求委派给父类加载器,每一个层次的加载器都是如此,依次递归,因此所有请求都是从顶层加载器->启动类加载器中开始,只有当父加载器反馈自己无法完成此加载时,子加载器才会尝试自己加载

  • 好处
    如果没有双亲委派模型,各个类自行加载,那么可能同一个Object类会出现多个不同的Object类,非常混乱,双亲委派模型提供了一种优先级层次关系,无论哪个类加载器要加载这个类,最终都会交到最顶端的启动类加载器进行加载,使得这个类在各种类加载器环境中都是同一个类。

你可能感兴趣的:(类生命周期)