类生命周期
类的生命周期顺序经历五个阶段:加载、连接、初始化、使用、卸载。
加载
连接
包含三个过程,交叉执行,通常在一个阶段的执行过程中会激活另一个阶段。
验证
准备
解析
初始化
使用
创建对象
卸载
销毁对象
运行时数据区
虚拟机栈 线程私有,生命周期与线程相同,存储了局部变量。方法在执行过程中,会在虚拟机栈中创建一个栈帧。
本地方法栈 线程私有,存储 native 方法所需要的区域。
程序计数器 线程私有,存储指令地址,用于判断线程的分支、循环、跳转、异常、线程切换、恢复等等。
方法区 线程共享,存储 VM 加载的类信息、常量、静态变量、JIT 编译后的代码等。
堆 线程共享,存储所有的对象实例。
运行时常量池
位于方法区,存储编译期、运行时产生的常量。String 的 intern 方法就是一个典型的例子。