ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

执行引擎 Execution Engine

2021-07-18 18:02:32  阅读:192  来源: 互联网

标签:Engine 解释器 JIT service 计数器 编译 编译器 引擎 Execution


解释器和JIT编译器

执行引擎的执行完全依赖PC寄存器。前端编译由javac完成,后端编译由执行引擎完成。

解释器:对字节码采用逐行解释的方式执行,将每条字节码内容翻译为本地机器指令执行

JIT编译器:虚拟机将源代码直接翻译成和本地机器平台相关的机器语言

 

何时使用JIT编译器?

        一个被多次调用的方法,或者是一个方法体内部循环次数较多的循环体都可被称之为“热点代码”,都可以通过JIT编译器编译为本地机器指令。由于这种编译方式在方法执行过程中,因此称之为栈上替换,或简称OSR。

        具体多少次可达到标准,需要一个阔值,主要依靠热点探测。HotSpot采用的热点探测方式是基于计数器的热点探测。建立两个不同类型的计数器,分别为方法调用计数器(方法的调用次数)和回边计数器(循环体循环次数)。

        方法调用计数器,client默认1500次,service默认10000次,草果就触发JIT编译。阔值设置参数-XX:CompileThreshold。

        热度衰减,一段时间内达不到次数,就会减少一半,这段时间就称之为半衰周期。虚拟机参数-XX:-UseCounterDecay设置是否进行热度衰减。可通过-XX:CounterHalfLifeTime参数设置半衰周期,单位是秒。

        Java虚拟机内部有两个JIT编译器,-client和-service,64位操作系统默认-service。区别就是-service优化强一些。C1的优化主要是方法内联、去虚拟化、冗余消除;C2的优化主要在全局层,逃逸分析是优化的基础:标量替换、账上分配、同步消除(synchronized)。 

        可用参数设置解释器和JIT编译器混的使用:

                -Xint解释器

                -Xcomp编译器器

                -Xmixed混合使用

标签:Engine,解释器,JIT,service,计数器,编译,编译器,引擎,Execution
来源: https://blog.csdn.net/Java_Male/article/details/118880280

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有