JVM内部结构

总览:

 

标记字(MarkWord)内部结构(64位):

锁状态 56bit 1bit 4bit 1bit 2bit
25bit 31bit 是否偏向锁 锁标志位
无锁 unused hashCode Cms_free 分代年龄 0 01
偏向锁 线程ID Epoch:2bit Cms_free 分代年龄 1 01
轻量锁 指向栈中的锁记录指针 00
重量锁 指向堆中的锁对象指针 10
GC标记 11

 

垃圾回收器关系图(JDK1.8):

 

垃圾回收器选型:

单CPU:-XX:+UseSerialGC

多CPU、吞吐量最大化:-XX:+UseParrallelGC

多CPU、响应优先:-XX:+UseConcMarkSweepGC

G1:CMS的上位替代,稳定性有待观察

 

JAVA 类加载过程:

  1. 加载:加载类的字节码,在方法区创建对应的数据结构(字段、方法、接口等),在堆中生成一个对应的 java.lang.Class 实例。

  2. 链接

    • 验证:验证字节码文件是否符合JVM虚拟机的规范,引用是否存在。
    • 准备:给静态字段分配内存,给常量=常量赋初始值。
    • 解析:将类中的符号引用转换为直接引用。
  1. 初始化:触发父类初始化,执行<clinit>()方法,执行静态代码块,给静态变量、常量=字面量赋初始值。

posted @ 2024-03-30 21:27  Yfeil  阅读(11)  评论(0编辑  收藏  举报