欢迎来到 丽江市某某家具客服中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
JAVA编译器和解释器的协调工作流程
  来源:丽江市某某家具客服中心  更新时间:2024-05-07 00:13:56

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


友情链接魔兽世界黑爪龙虾刷取位置《原神手游》稻妻怎么去 稻妻城开启方法介绍dnf剑宗110版本加点推荐2023最新,dnf110级版本全职业加点汇总 2023全职业加点大全经典版爱情小游戏大全泰拉瑞亚1.5.3手机版下载中文 v1.4.4.0魔兽世界小型亚口鱼在哪里钓?魔兽世界小型亚口鱼位置介绍男格斗和女格斗哪个好,男格斗和女格斗区别赏金术士 英雄联盟S8沙漠死神上分攻略DNF:狂人增幅上头 本想打造破万智力奶妈 增幅过后减两千雷霆之怒————雷霆之怒道士技能攻略最新GM权限游戏app推荐 有哪些gm手机游戏软件MDNF 角色删除及恢复常见问题抢劫团伙靠发廊小姐钓嫖客 曾入民宅用枪指脑袋ezEIPv5.0sf123传奇发布LOL诡术妖姬中单霸主 妖姬天赋符文攻略权途红颜秦天明林婉小说阅读(秦天明白薇)最新章节免费在线阅读_秦天明白薇权途红颜秦天明林婉小说阅读免费阅读全文_笔趣阁(秦天明白薇)梦幻西游剧情奖励一览表(梦幻西游那些剧情任务值得做)斗战神职业推荐,把所有职业都分析下最好三国杀游戏的武将皮肤以及台词-晋司马懿解锁游戏乐趣:专业级手柄模拟器推荐魔兽世界9.1全部更新内容汇总 wow9.1职业副本更新改动一览cf破天狂龙怎么获得(破天狂龙活动)DNF忍者二觉前瞻 不知火刷图加点推荐【调查】光天化日抢车打人 当事人指证有警察参与砍价十大技巧魔兽世界全职业神器外观获取指南 隐藏神器外观任务大全魔兽世界圣骑士天赋加点教程(魔兽怀旧服圣骑士天赋介绍)魔兽世界精妙的传送艺术怎么做魔兽世界怀旧服三大本惩戒骑毕业装备有哪些哪个传奇sf发布网最火 十大热门传奇手游sf发布网推荐如果暴雪还你三个天赋或技能之猎人的绝唱传奇私服如何获得不朽武器爪磨 凤凰和猫头鹰的典故Spring Cloud Config相关面试题及答案(2024)无尽的神话本周网页游戏开测推荐(1月9日-1月15日)全攻略魔枢空间裂隙?魔枢空间裂隙在哪明日方舟先锋干员琴柳技能是什么王者荣耀什么英雄克制暃?
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.7076

Copyright © 2024 Powered by 丽江市某某家具客服中心   sitemap