方法区:类 堆:对象 ## 装载: class文件->字节流->类加载器(代码模块) 自定义类加载器 字节码增强 java agent 将一个字节流代表的静态存储结构转化成方法区运行时数据结构 在java堆中生成一个代表这个类的java.lang.Class对象,作为方法区 的数据访问入口 ## 链接 ### 验证 文件格式验证,class文件,jvm版本 元数据验证,对于java语法的验证 字节码验证,数据流和控制流验证,运行时检查,栈数据类型和操作码 符号引用验证,将符号引用转为直接引用.(链接) ### 准备 常量赋值 ### 解析 从运行时常量池中的符号引用动态确定具体值的过程(符号引用->直接引用). 对解析的结果进行缓存. ## 初始化 执行类构造器方法的过程. 声明类变量为定制的初始化值 使用静态代码块为类变量赋值 ## 对象几种状态 1. 创建阶段 2. 应用阶段 3. 不可见阶段 4. 不可达阶段 5. 收集阶段 6. 终结阶段 7. 空间重分配阶段