欢迎来到 长治市某某网络科技业务部
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
JAVA编译器和解释器的协调工作流程
  来源:长治市某某网络科技业务部  更新时间:2024-05-07 15:00:24

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


友情链接《魔兽争霸3冰封王座》BOSS战冰封王座v1.8.3正式版CSGO大行动发展史技能介绍《魔兽世界怀旧服》塞瑞娜·血羽任务怎么做 塞瑞娜·血羽任务攻略哈登30岁生快!无论黑或粉 你应该知道的30件事魔兽世界10.0圣骑士天赋怎么点 10.0圣骑士天赋加点攻略DNF:逸龙剑改版超越圣剑,那么如何做一把自制史诗呢?简直坑!求求荣县的大神们,别再给我发拼多多砍价链接了!dnf女弹药用什么武器最好 女弹药装备选择攻略 知识库云顶之弈s9索拉卡攻略 s9索拉卡技能/羁绊/出装/阵容玩法全解原神雪山宝箱位置一览 雪山宝箱解谜流程解析11月19日星期一,刃牙2018、夕照少女,等8部动漫资源更新僵尸危机3无敌版在线玩上海首个电竞产业学院诞生啦!今年9月就招生[综合]TBC药水药剂配方收集为啥养狗的人能和狗有那么深的感情?王者荣耀西施和曜的隐藏台词云顶之弈10.5版本6召唤使阵容怎么玩 6召唤使阵容玩法攻略一种重要的资源面临枯竭,或将给人类带来危机?科学家发出警示魔兽世界怎么改字体(魔兽世界个性字体,详细设置方法)造梦西游3装备如何获得不用下载就能玩的游戏排行榜前十名推荐2021 十大不用下载就能玩的游戏合集5月13日至15日中央电视台各频道电视节目表DNF官方APP《魔兽世界》8.1宠物对战诺莫瑞根成就​攻略《魔兽争霸3冰封王座》世界大战2v2.0.10正式版小鬼当家作文【配装加点】最强通刷 全场景制霸 凤凰三修武学刺客 刷图 K6 build全攻略!迷你世界2021红玫瑰少女仙杜瑞拉最新皮肤激活码《洛克王国》木灵石分布地点魔兽世界台服怎么充值?魔兽台服最新充值教程分享厉害 红色警戒线2尤里的复仇攻略秘籍大全wow影踪派崇拜奖励怎么获取 wow崇拜怎么刷深入Banana Gun:当小白会用代币狙击bot,链上打新内卷已经开始职业赛场主流AD盘点 厄斐琉斯EZ已成版本之子三国杀 张颌:三国杀张颌:英勇善战,智勇双全多玩DNF盒子安卓版lol神龙尊者寒冰怎么样 神龙寒冰皮肤效果一览魔兽世界乌龟服刷棘齿城声望,乌龟任务升级保姆教程梦幻西游:兑换神兜兜超值特殊兽诀,轻松拥有浮云神马和须弥真言
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.175

Copyright © 2024 Powered by 长治市某某网络科技业务部   sitemap