1、运行过程
(1)JIT 将热点代码直接编译到系统里成本地代码,加快执行速度
1.png
2、运行时数据区 结构
2.png
(1)程序计数器(线程私有):
① 为什么需要,因为系统有数据片轮转机制,可能会暂停,所以需要记录停在哪里,和下次从哪里继续;
② 唯一不会OOM的
(2)虚拟机栈(线程私有):存储当前线程运行方法所需的数据、指令、返回地址
① 栈帧(方法):局部变量表、操作数栈、动态链接、返回地址
② 操作数栈: java解释执行(c基于硬件寄存器)
③ 动态链接:方法分派(静态和动态)
(3)本地方法栈(线程私有)
(4)方法区:(<= jdk1.7 永久代 >=jdk1.8 元空间,机器内存)
① 类信息
② 常量
③ 静态变量
④ 即时编译期编译后的代码
(5)java堆
① 对象实例
② 数组
3、栈的优化
(1)方法内联
3.png
(2)栈帧之间共享数据
网友评论