类生命周期

类的生命周期顺序经历五个阶段:加载、连接、初始化、使用、卸载。
image.png

加载

双亲委派模型 // todo

连接

包含三个过程,交叉执行,通常在一个阶段的执行过程中会激活另一个阶段。
验证
准备
解析

初始化

使用

创建对象

指针碰撞

卸载

使用 JMX 监控 // todo

销毁对象

finalize 方法 // todo

运行时数据区

640.png
虚拟机栈 线程私有,生命周期与线程相同,存储了局部变量。方法在执行过程中,会在虚拟机栈中创建一个栈帧。
本地方法栈 线程私有,存储 native 方法所需要的区域。
程序计数器 线程私有,存储指令地址,用于判断线程的分支、循环、跳转、异常、线程切换、恢复等等。
方法区 线程共享,存储 VM 加载的类信息、常量、静态变量、JIT 编译后的代码等。
线程共享,存储所有的对象实例。

运行时常量池

位于方法区,存储编译期、运行时产生的常量。String 的 intern 方法就是一个典型的例子。

栈帧

stack frame

对象头

markword

参考文献