欢迎来到 宁波市某某化工涂料销售部
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
JAVA编译器和解释器的协调工作流程
  来源:宁波市某某化工涂料销售部  更新时间:2024-05-03 08:00:28

JAVA编译器和解释器的协调工作流程

在部分商用虚拟机中(如HotSpot) ,编译Java程序最初是器和器通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的解释运行特别频繁时,就会把这些代码认定为“热点代码”。协调为了提高热点代码的工作执行效率 ,在运行时 ,流程虚拟机将会把这些代码编译成与本地平台相关的编译机器码 ,并进行各种层次的器和器优化 ,完成这个任务的解释编译器称为即时编译器(Just In Time Compiler ,下文统称JIT编译器) 。协调

具体执行流程如下图所示:

JAVA编译器和解释器的协调工作流程

程序中的代码只有是热点代码时,才会编译为本地代码 ,流程那么什么是编译热点代码呢?

运行过程中会被即时编译器编译的“热点代码”有两类 :

1、被多次调用的器和器方法。

2、解释被多次执行的循环体。

判断是否是热点代码 ,不是则逐行解释每条代码,翻译成机器码执行 ,否则一次性编译成机器码存到方法区,以后每次直接运行机器码 。默认一段代码(方法 、或循环体)被调用10000次以上被认为是热点代码 。

说JIT比解释快,其实说的是“执行编译后的代码”比“解释器解释执行”要快,并不是说“编译”这个动作比“解释”这个动作快 。JIT编译再怎么快,至少也比解释执行一次略慢一些,而要得到最后的执行结果还得再经过一个“执行编译后的代码”的过程 。所以,对“只执行一次”的代码而言,解释执行其实总是比JIT编译执行要快。

怎么算是“只执行一次的代码”呢?粗略说 ,下面两个条件同时满足时就是严格的“只执行一次”

1、只被调用一次 ,例如类的构造器(class initializer())

2 、没有循环

对只执行一次的代码做JIT编译再执行 ,可以说是得不偿失 。对只执行少量次数的代码,JIT编译带来的执行速度的提升也未必能抵消掉最初编译带来的开销 。只有对频繁执行的代码 ,JIT编译才能保证有正面的收益 。

对一般的Java方法而言 ,编译后代码的大小相对于字节码的大小,膨胀比达到10x是很正常的。同上面说的时间开销一样 ,这里的空间开销也是 ,只有对执行频繁的代码才值得编译 ,如果把所有代码都编译则会显著增加代码所占空间,导致“代码爆炸” 。

这也就解释了为什么有些JVM会选择不总是做JIT编译,而是选择用解释器+JIT编译器的混合执行引擎。

为何要实现两个不同的即时编译器

HotSpot虚拟机中内置了两个即时编译器:Client Complier和Server Complier ,简称为C1 、C2编译器,分别用在客户端和服务端。

目前主流的HotSpot虚拟机中默认是采用解释器与其中一个编译器直接配合的方式工作。程序使用哪个编译器 ,取决于虚拟机运行的模式 。HotSpot虚拟机会根据自身版本与宿主机器的硬件性能自动选择运行模式 ,用户也可以使用“-client”或“-server”参数去强制指定虚拟机运行在Client模式或Server模式 。

用Client Complier获取更高的编译速度,用Server Complier 来获取更好的编译质量(例如 JIT优化) 。为什么提供多个即时编译器与为什么提供多个垃圾收集器类似,都是为了适应不同的应用场景。

编译质量的意思就是在编译过程中会进行优化 ,Client Complier优化的少 ,Server Complier优化的多  ,优化多则启动慢

Server Compiler和Client Compiler两个编译器的编译过程是不一样的 。

对Client Compiler来说 ,它是一个简单快速的编译器  ,主要关注点在于局部优化 ,而放弃许多耗时较长的全局优化手段。

而Server Compiler则是专门面向服务器端的 ,并为服务端的性能配置特别调整过的编译器 ,是一个充分优化过的高级编译器 。


友情链接LOL新手礼包大放送 海量英雄皮肤和符文一件有趣的事优秀作文500字WOW潘达拉稀有精英位置及掉落dnf稀有克隆皮肤怎么获得LOL8月7日更新了什么内容 lol8.15版本更新汇总高考化学重要知识点及注意事项塞尔达传说王国之泪神秘商人在哪里手游变态游戏盒子排行 十大变态手游盒子排行榜2024lol s4赛季婕拉天赋加点攻略CF抽奖什么时候概率高LOLs8圣枪游侠(卢锡安)符文推荐 lol射手位选手排名《上古卷轴5》ENB核心INI优化配置指南《dnf》数字解密活动9月2日答案是什么 数字解密9月2日答案LOL赵信打野天赋:无畏冲锋,制霸野区!《仙剑奇侠传5》v1.05 九项属性修改器wow10.0图形设置推荐 魔兽世界10.0图形设置在哪2022哪有高中电子课本软件免费下载 能免费下载电子课本的软件排行榜《魔兽世界怀旧服》法师PVP天赋怎么加点 法师PVP天赋加点攻略炉石传说好友招募流程攻略 好友招募界面解析LOL手游美服《云顶之弈手游》伊泽瑞尔出装推荐《大话西游2》火法仙天赋怎么加点 火法仙天赋加点推荐原创浙江最奇特的瀑布,横跨在巨石之上,被誉为“天下第一奇观”180合击:你喜欢怎么搭配英雄?dota2中的昵称怎么改?dota2改名字(昵称)两种方法介绍Dota2影魔新手教学攻略 SF技能加点、出装解析王者荣耀实战练习在哪 实战练习怎么进dnf徽章镶嵌栏怎么获得Switch 游戏王者荣耀实战练习在哪 实战练习怎么进呆中上口里有鸡打一成语《LOL》2021无限火力攻略 轮子妈天赋符文加点推荐dnf一天能邮寄多少个亿龙之谷 韩服2022年12月 职业平衡(简陋版)lol云顶之弈掠食者阵容怎么玩 掠食者羁绊出装推荐《DNF》100级剑豪攻略 SS防具选择推荐《哈利波特魔法觉醒》6月大更新内容介绍2023PSP《恶魔城X历代记》中/日版金手指【DNF】【黑鸦之境攻略】混沌使徒的复活前兆:奖励、机制、路线攻略Dota2影魔史诗级加强 梦回2013三炮带走
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.9902

Copyright © 2024 Powered by 宁波市某某化工涂料销售部   sitemap