JVM模式、JIT编译

JVM模式:
Client:启动快,启动后性能不如Server,适合桌面应用。
Server:启动慢,启动后性能高,适合服务器后台。

热点代码:
被多次调用的方法
被多次执行的循环体

热点探测:
基于采样
基于计数器

计数器的种类:
方法调用计数器(默认阈值在Client模式下是 1500 次,在Server模式下是 10000 次)
回边计数器

两个计数器的协作

Java代码(源代码)、字节码/中间码、机器码/本地代码/机器指令

JIT(Just In Time)编译器/即时编译器:将热点代码对应的字节码编译成机器码进行存储,用到对应的字节码时,直接执行存储的机器码。

解释器:用到对应的字节码时,编译成机器码执行。

即时编译器分类:
Client Compiler - C1编译器
Server Compiler - C2编译器

HotSpot运行模式(默认是混合模式):
解释模式
编译模式(优先JIT编译,无法进行时解释)
混合模式

分层编译策略:
第0层:解释执行,解释器不开启性能监控功能,可触发第1层编译。
第1层:也称为C1编译,将字节码编译为本地代码,进行简单,可靠的优化,如有必要将加入性能监控的逻辑。
第 2 层(或 2 层以上):也称为 C2 编译,也是将字节码编译为本地代码,但是会启用一些编译耗时较长的优化,甚至会根据性能监控信息进行一些不可靠的激进优化。

编译优化技术:
语言无关的经典优化技术之一:公共子表达式消除
语言相关的经典优化技术之一:数组范围检查消除
最重要的优化技术之一:方法内联
最前沿的优化技术之一:逃逸分析(方法逃逸、线程逃逸)

参考:https://www.jianshu.com/p/fbced5b34eff

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值