JVM-内存、执行过程
2021-01-17 22:04:43 0 举报
JVM内存结构,class文件执行过程
作者其他创作
大纲/内容
解释执行器
JVM内存
heap
frame 1
JVM
本地方法栈
编译结果
即时编译器
exclusive for thread
底层硬件
shared by threads
frame n
JVM栈帧
Class文件
JVM方法栈
执行机器码
解释成机器码
HotSpot即时编译器内置多个即时编译器:C1、C2、Graal(JDK10引入),其中C1又叫Client编译器,面向的是对启动性能有要求的GUI程序,C2又叫Server编译器,面向对峰值性能有要求的服务端程序;从1.7开始,HotSpot默认采用分层编译:热点方法首先会C1编译,而后,热点方法中的热点会进一步被C2编译,且为了不影响性能,即时编译是放在额外的编译线程中进行;一般C1及C2编译器分配到的CPU数量比为1:2。资源充足情况下,字节码的解释执行和即时编译可同时进行,编译完的机器码会在下次调用该方法时启用,以替换原本的解释执行。
栈帧大小是提前计算好的,且JVM不要求栈帧在内存中连续分配;退出当前方法是,不管是正常返回还是异常返回,JVM均会弹出当前线程的当前栈帧,并将之舍弃。
HotSpot即时编译器概述
机器码
pc寄存器
java执行流程
解释执行优势在于无需等待编译,而即时编译优势在于实际运行速度快;Hotspot默认采用混合模式,综合两者优点;一般会先解释执行,而后将其中反复执行的热点代码,以方法为单位即时编译执行。
methodarea
收藏
0 条评论
下一页
为你推荐
查看更多