性能调优专题 - JVM (公开课)
2020-06-16 10:16:30 0 举报
JMM - JVM(Java 虚拟机)内存模型
作者其他创作
大纲/内容
程序计数器=10
类加载子系统
线程 - main
即将执行 istore_3 时
栈帧的局部变量表中math 局部变量值,为指向堆内存中 math 对象地址的引用
minor gc
年轻代
a = 1
常量
s1
Object Header(对象头)1、Mark Word(标记字段)自身运行时数据:哈希值,GC 分代年龄,锁状态标志,线程持有锁,偏向线程 ID,偏向时间戳2、Klass Pointer(类型指针)类的元数据的指针3、数组长度(只有数组对象才有)
JVM(Java 虚拟机)
线程2
Math对象
... ...
类元信息
堆
方法出口
局部变量表
b = 2
方法区(元空间)
实例数据Instance Data
From(1/10)
程序计数器
直接内存
s2
math2
栈(线程)- FIFO
Survivor 区
To(1/10)
java Math.class
动态链接
运行时数据区(内存模型)
new Math() 时,会在 Math 对象头存入类元信息的地址指针。在调用对象方法时,就是通过它,找到类元信息,从而找到指令码。
执行引擎
操作数栈
老年代
对齐填充 Padding(保证对象是 8 个字节的整数倍)
math
栈帧 - main
Eden(8/10)
Object
当前栈帧 - compute()
public int compute(); Code: 0: iconst_1 1: istore_1 2: iconst_2 3: istore_2 4: iload_1 5: iload_2 6: iadd 7: bipush 10 9: imul 10: istore_3 11: iload_3 12: ireturn
栈(线程)
静态变量
c = 30
本地方法栈
收藏
0 条评论
回复 删除
下一页