目录
类的生命周期
类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下7个阶段:加载、验证、准备、解析、初始化、使用、卸载。验证、准备、解析3个阶段统称为连接
加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定,它在某些情况下可以在初始化后再开始,是为了支持Java语言的运行时绑定。
类加载过程中初始化阶段开始的时机
Java虚拟机规范没有强制约束类加载过程的第一阶段(加载)什么时候开始,但对于初始化阶段,有着严格的规定。有且仅有5种情况必须立即对类进行初始化。
在遇到new、putstatic、getstatic、invokestatic 字节码指令时如果类尚未初始化则需要先触发其初始化。对类进行反射调用时如果类还没有初始化,则需要先触发其初始化。初始化一个类时如果其父类还没有初始化则需要先初始化父类。虚拟机启动时用于需要指定一个包含main()
方法的主类,虚拟机会先初始化这个主类。这些场景