JAVA最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”而将它们编译成本地机器码
HOTSPOT和J9都是解释器和编译器并存,保留解释器的原因是,加快启动时间,立即执行,当运行环境中内存资源限制较大时,解释器可以节约内存,解释器还可以作为激进优化的编译器的“逃生门”(称为逆优化Deoptimization)
HOTSPOT内置了两个即时编译器,client compiler和server compiler,称为C1,C2,默认是采用解释器与其中一个编译器直接配合的方式工作。HOTSPOT会根据自身版本和宿主机器的性能自动选择运行模式,用户也可以使用-client或-server来决。
这种解释器编译器搭配的方式成为混合模式,用户还可以使用-Xint强制虚拟机使用“解释模式”
也可以使用-Xcomp强制“编译模式”
被编译的触发条件:
- 被多次调用的方法
- 被多次执行的循环体(栈上替换)OSR On Stack Replacement
判断是否是热点代码的行为成为热点探测:hot spot detection,主要的热点探测方式主要有两种:
- 基于采样的热点探测,JVM会周期性检查各个线程的栈顶,如果某个方法经常出现在栈顶,那就认定为热点方法。简单高效,精度不够。
- 基于计数器的热点探测,统计方法执行次数。(HOTSPOT使用这种方式)
HOTSPOT有两个计数器:方法调用计数器和回边计数器
方法调用计数器client默认1500次,server默认10000次,可以通过参数-XX:CompileThreshold来设定。调用方法时,会先判断是否存在编译过的版本,如果有则调用该版本,否则计数器加1,然后看方法调用计数器和回边计数器之和是否超过方法调用计数器的阈值。超过,则提交编译请求
方法调用计数器并不是统计方法调用绝对次数,而是一个相对执行频率,超过一定时间,如果方法调用次数不足以让它提交给编译器,则计数器就会被减少一半,这种现象称为热度衰减(Counter Decay),进行热度衰减的动作是在垃圾回收时顺便进行的,而这段时间就被称为半衰周期(Counter Half Life Time)可用-XX:-UseCounterDecay来关闭热度衰减,用-XX:CounterHalfLifeTime来设置半衰时间。
回边计数器用于统计方法中循环体的执行次数。字节码遇到控制流向后跳转 的指令成为回边。回边的控制参数有
-XX:BackEdgeThreshold,-XX:OnStackReplacePercentage.
编译是后台进行的,可以通过-XX:-BackgroundCompilation来禁止后台编译
分享到:
相关推荐
运行期优化 高效并发-java内存模型与线程 线程安全与锁优化 1 标记-清除算法:首先标记所有需要回收的对象(引用计数或可达性分析算法标记),在标记完成后统一回收所有被标记的对象。 缺点:效率问题,标记和清除两...
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。...6. 运行期优化 第五章:内存模型 1. Java 内存模型 2. 可见性 3. 有序性 4. CAS 与原子类 5. synchronized 优化
1. 类文件结构 2. 字节码指令 3. 编译期处理 4. 类加载阶段 5. 类加载器 6. 运行期优化 1. 类文件结构
今天小编就为大家分享一篇关于JVM:晚期(运行期)优化的深入理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
针对OpenCL(open computing language)编译时期的特有模式, 提出了一种新的针对异构计算平台的编译期优化方法。该方法根据设备端和主机端的各自特点, 将设备端的一些冗余操作提到主机端或者新的设备端kernel中去执行,...
参考文献: [1]陈柯蒙,肖曦,田培根等....外层模型计及BIPV 系统全寿命周期成本与效益,以投资回收期最短为目标函数,优化光伏与储能的容量配置。 压缩包内包含对文献的解读及完整的matlab代码复现。
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、...
【微电网优化】基于matlab粒子群算法求解热电联供型微电网经济运行优化问题【含Matlab源码 1696期】.mp4
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:demo_2.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有...
的运行期优化,也就是 JIT 时进行的优化进行了总结,编译器优化部分尚未进行深入研究。 阅读方法: 本 repo 的 README.md 从头读到尾就是一个虚拟机大部分知识点的框架,就像一颗搜索树一样,我们想要了解哪一部分...
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:Main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据...
借鉴成熟的社科项目管理经验,着眼于该校校级社科项目运行管理实际,立足比较与完善的视角,通过剖析校级社科项目运行管理制度项目设立、申报和管理等阶段的实际,发现校级社科项目存在项目类型单一、执行期短和管理环节...
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:Main .m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据...
【微电网优化】基于matlab粒子群算法求解微型燃气轮机冷热电联供系统优化运行问题【含Matlab源码 2698期】.mp4
CSDN海神之光上传的全部代码均可运行,亲测可用,直接换数据就行,适合小白; 1、代码压缩包内容 主函数:Main .m; 数据; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若...
0积分下载,代码运行效果图见压缩包 1、完整代码,可直接运行 ,包运行 ...2、海神之光擅长领域:路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真 3、版本:2014a或2019b
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、...
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:Main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据...
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、...