欢迎来到 百色市某某机电设备有限公司
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
JAVA编译器和解释器的协调工作流程
  来源:百色市某某机电设备有限公司  更新时间:2024-05-06 23:59:48

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


友情链接战地战争手游 v2.0.2 中文版国家税务总局尤溪县税务局2023年1月份个体工商户定期定额公示原神怎么去稻妻 去稻妻前置任务你经历过哪些恐怖的事情???来聊一聊!!海加尔山之战副本攻略(海加尔山之战时间线)穿越火线手游:凤凰之锋重返战队商城,战区积分宝箱开到爽!求生之路2怎么联机-两种有效联机方法1.80星王合击dnf剑魂加点2023推荐(dnf剑魂加点方案介绍)摩尔庄园神奇密码是什么 神奇密码2023最新攻略王者荣耀曜云鹰飞将皮肤什么时候上线 云鹰飞将皮肤多少点券羽球人 篇四:羽球人,你会选择骄点R-7吗?王者荣耀:暃从出场到全民厌恶不到短短两天,这英雄究竟多恶心汽车行业消费者APP产品分析报告梦幻西游:神兜兜卖到7月份,个人购买不限量,神兽半年内必降价摇钱树种出5个特殊令牌,这是不是梦幻西游第一树苗?《保卫萝卜2》 56关没有飞机安卓破解游戏下载LOL美服测试服下载教程 英雄联盟pbe云顶美服测试服怎么下载幻塔通关密码获取大全【整理重发】浅谈三国杀S5统帅三军魔兽世界怀旧服秘银矿哪里多原神怎么去稻妻 去稻妻前置任务mm中文版小游戏大全梦幻西游炼兽真经每年什么时候可以吃-炼兽真经使用时间攻略全新游戏财产保护措施—仓库锁登场知乎游戏领域每周看点 2019.3.15永恒的追猎单机好玩手游破解下载超稀有的11技能善恶海毛虫!这些宝宝你都见过吗?英语趣配音下载死亡骑士天赋:《魔兽世界》死亡骑士天赋怎么加点?内置GM系统可以免费刷充的gm手游 不花钱就能有无限资源的gm手游暴雪举办《魔兽》15周年活动 出现大量神兵利器DNF: 旭旭宝宝准备玩奶妈! 看到这三个宝珠, 玩家: 一万智力奶妈?小狗的日记wow魔兽世界单机版秘籍命.doc姜维|品鉴一下win11英雄联盟进不去怎么回事 win11系统lol进不去游戏如何修复当前信息:魔兽世界怀旧服永生幽暗手套获取攻略是什么?永生幽暗手套的特点是什么?
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2029

Copyright © 2024 Powered by 百色市某某机电设备有限公司   sitemap