欢迎来到 阜阳市某某食品机械经销部
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
JAVA编译器和解释器的协调工作流程
  来源:阜阳市某某食品机械经销部  更新时间:2024-05-08 07:35:14

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则是专门面向服务器端的,并为服务端的性能配置特别调整过的编译器 ,是一个充分优化过的高级编译器  。


友情链接王者荣耀黄buff模式怎么进 黄buff模式进入方法新开盛大传奇sf下载空军总医院挂号app下载极无双太史慈怎么样?太史慈技能介绍纪念被和谐的战袍短裙!魔兽幻化日记:小裙边长裙幻化汇总Galgames Hgames下载中心,无毒魔兽世界怀旧服tbc竞技场怎么建立队伍 tbc竞技场建队方法介绍美服《魔兽世界》战友招募系统将提供新奖励穿越火线本版1年以内的所有 面经题目美媒爆2K19封面球员,詹姆斯再度当选,细数那些上过2K封面的球星终身荣誉会员 至高荣誉之路 我是明星苍穹变vivo版 v5.3.1 安卓版王者荣耀黄buff模式怎么进 黄buff模式进入方法《新天堂II》版本升级内容说明60级版本毕业装备(魔兽世界怀旧服特效装备)《天涯明月刀手游》账号未激活怎么办 测试账号未激活情况解析DNF可玩性最高的十个职业,第一可不是剑魂!网游DNF:无双剑神英国硬币纸币那么多,傻傻分不清?一篇教你快速辨认花多少钱都能玩好暗黑3配置推荐英雄联盟手游锐雯连招怎么玩?王者荣耀日之塔奖励汇总 王者荣耀日之塔奖励大全DNF数字解密10月10日答案 数字解密暗号10.10自制三国杀武将姜维钟会英雄联盟手游锐雯连招怎么玩?DNF暗帝最新加点一览密室逃脱深红色房间 碧绿色房间闯关攻略合集摩尔庄园为什么不能修复牲畜小屋LOL冰雪节活动什么时候开始 滚雪球抽皮肤活动曝光魔兽争霸3冰封王座1.29补丁更新改动说明梦幻西游梦幻西游琵琶行_梦幻西游胡姬琵琶行歌词答案_梦幻西游胡姬琵琶行副本歌词最新答案《暗黑破坏神3》Skidrow局域网破解版放出dnf不能创建队伍,如何解决?dnf创建队伍失败的原因和解决方法数码评测 篇九:没短板?真旗舰平板!天玑8100加持+12.1英寸大屏,荣耀V8 Pro评测方舟手游稀有龙在哪里,方舟生存进化风神翼龙在什么地方LOL宝石骑士出装介绍 最全面的宝石骑士打法英雄合击传奇1.85版开服表《DNF》刃影史诗装备选择介绍英雄联盟S6探险家EZ雷霆天赋加点玩法
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2209

Copyright © 2024 Powered by 阜阳市某某食品机械经销部   sitemap