Java类的生命周期
类的生命周期 java类的生命周期就是指一个class文件从加载到卸载的全过程。 完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,如图所示: 加载 在java中,我们经常会接触到一个词——类加载,它和这里的加载并不是一回事,通常我们说类加载指的是类的生命周期中加载、连接、 初始化三个阶段。在加载阶段,找到需要加载的类并把类的信息加载到方法区中, 然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。 对于加载的时机,真正用到一个类的时候才对它进行加载。 有时连接阶段并不会等加载阶段完全完成之后才开始,而是交叉进行,加载阶段总是在连接阶段之前开始,连接阶段总是在加载阶段完成之后完成。 连接 连接阶段比较复杂,一般会跟加载阶段和初始化阶段交叉进行,这个阶段的主要任务就是做一些加载后的验证工作以及 一些初始化前的准备工作,可以细分为三个步骤:验证、准备和解析。 验证:当一个类被加载之后,必须要验证一下这个类是否合法,保证加载的类是能够被jvm所运行。比如这个类是不是符合字节码的 格式、变量与方法是不是有重复、 数据类型是不是有效、继承与实现是否合乎标准等等。 准备:准备阶段的工作就是为类的 静态变量 分配内存并设为jvm默认的初值,对于非静态的变量,则不会为它们分配内存。