执行引擎执行代码底层实现

执行引擎执行代码底层实现

解释器

字节码解释器

java字节码->c++ ->硬编码(汇编)
其实是switch case 将java转成c++语言

模板解释器

java字节码 ->硬编码(汇编)

JIT即时编译

模板解释器直接编译成硬编码,存储在方法区

jvm三种执行方式(执行引擎执行java字节码的运行方式)

1、Xint 纯字节码解释器
2、Xcomp 纯即时编译斜体样式
3、Xminxed 混合式(默认)
为什么使用混合模式?
项目越大编译时间耗时过长
热机切冷机故障(阿里)

codeCache(内存生成热代码)

存放在 :方法区(原空间)

即时编译是什么?什么是热点代码

两种即时编译器:
c1 -clinet 如果触发即时编译 就是c1编译器
需要收集的数据较少,优化比较浅,执行效率(速度)慢
c2 -server 如果触发即时编译 就是c2编译器
触发条件比较苛刻,优化比较深(逃逸分析)
,执行速度快,编译时候较耗资源
异步执行 触发即时编译后 写入队列,消费线程进行消费

触发即时编译阈值

在这里插入图片描述
server模式1w次
client 1500次

热度衰减

隔一段时间 对即时编译缓存 进行2倍递减

热点代码缓存 codecache
InitialCodeCacheSize
server 2496k
client 160k
ReservedCodeCacheSize
在这里插入图片描述

分层编译

默认开启
系统启动初期采用c1 运行一段时间以后采用c2

优化相关

逃逸
全局变量:会产生逃逸
局部变量:不可能逃逸
分析
为什么进行逃逸分析?
栈上分配
开启逃逸分析就会进行栈上分配
HSDB工具查看
如果没有栈上分配,代码在堆里,开启逃逸分析生成的对象<10w次

	标量替换
	锁消除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值