游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

深入浅出JVM之执行引擎的解释执行与编译执行

  本篇文章围绕执行引擎,深入浅出的解析执行引擎中解释器与编译器的解释执行和编译执行、执行引擎的执行方式、逃逸分析带来的栈上分配、锁消除、标量替换等优化以及即时编译器编译对热点代码的探测执行引擎
  hotspot执行引擎结构图
  执行引擎分为解释器、JIT即时编译器以及垃圾收集器
  执行引擎通过解释器即时编译器将字节码指令解释编译为对应OS上的的机器指令
  本篇文章主要围绕解释器与即时编译器解释执行与编译执行
  Java虚拟机执行引擎在执行Java代码时,会有两种选择:解释执行和编译执行
  解释执行:通过字节码解释器把字节码解析为机器语言执行
  编译执行:通过即时编译器产生本地代码执行
  Class文件中的代码到底是解释执行还是编译执行只有Java虚拟机自己才能判断准确
  编译过程
  经典编译原理:1。对源码进行词法,语法分析处理2。把源码转换为抽象语法树
  javac编译器完成了对源码进行词法,语法分析处理为抽象语法树,再遍历抽象语法树生成线性字节码指令流的过程
  剩下的指令流有两种方式执行由虚拟机内部的字节码解释器去将字节码指令进行逐行解释(解释执行)或优化器(即时编译器)优化代码最后生成目标代码(编译执行)执行引擎流程图
  解释器与编译器
  解释器
  作用:对字节码指令逐行解释
  优点:程序启动,解释器立即解释执行
  缺点:低效
  即时编译器(justintimecompiler)
  Java中的编译期不确定可能说的是执行javac指令时的前端编译器(。java。class)也可能是后端编译器JIT(字节指令机器指令)还可能是AOT编译器(静态提前编译器)(。java机器指令)
  作用:将方法编译成机器码缓存到方法区,每次调用该方法执行编译后的机器码
  优点:即时编译器把代码编译成本地机器码,执行效率高,高效
  缺点:程序启动时,需要先编译再执行执行引擎执行方式
  执行引擎执行方式大致分为3种
  Xint:完全采用解释器执行
  Xcomp:优先采用即时编译器执行,解释器是后备选择
  Xmixed:采用解释器即时编译器
  hotspot中有两种JIT即时编译器
  Client模式下的C1编译器:简单优化,耗时短(C1优化策略:方法内联,去虚拟化,冗余消除)
  Server模式下的C2编译器:深度优化,耗时长(C2主要是逃逸分析的优化:标量替换,锁消除,栈上分配)
  分层编译策略:程序解释执行(不开启逃逸分析)可以触发C1编译,开启逃逸分析可以触发C2编译
  解释器,C1,C2编译器同时工作,热点代码可能被编译多次
  解释器在程序刚刚开始的时候解释执行,不需要承担监控的开销
  C1有着更快的编译速度,能为C2编译优化争取更多时间
  C2用高复杂度算法,编译优化程度很高的代码逃逸分析带来的优化
  当对象作用域只在某个方法时,不会被外界调用到,那么这个对象就不会发生逃逸
  开启逃逸分析后,会分析对象是否发生逃逸,当不能发生逃逸时会进行栈上分配、锁消除、标量替换等优化栈上分配内存Xms1GXmx1GXX:PrintGCDetailspublicclassStackMemory{publicstaticvoidmain(String〔〕args){longstartSystem。currentTimeMillis();for(inti0;i10000000;i){memory();}System。out。println(花费时间:(System。currentTimeMillis()start)ms);try{TimeUnit。SECONDS。sleep(1000);}catch(InterruptedExceptione){e。printStackTrace();}}privatestaticvoidmemory(){StackMemorymemorynewStackMemory();}}
  XX:DoEscapeAnalysis花费时间:63ms(未开启逃逸分析)
  XX:DoEscapeAnalysis花费时间:4ms(开启逃逸分析)
  默认开启逃逸分析锁消除
  同步加锁会带来开销
  锁消除:当加锁对象只作用某个方法时,JIT编译器借助逃逸分析判断使用的锁对象是不是只能被一个线程访问,如果是这种情况下就不需要同步,可以取消这部分代码的同步,提高并发性能标量替换
  标量:无法再分解的数据(基本数据类型)
  聚合量:还可以再分解的数据(对象)
  标量替换:JIT借助逃逸分析,该对象不发生逃逸,只作用于某个方法会把该对象(聚合量)拆成若干个成员变量(标量)来代替
  默认开启标量替换publicclassScalarSubstitution{staticclassMan{intage;intid;publicMan(){}}publicstaticvoidcreateInstance(){ManmannewMan();man。id123;man。age321;}publicstaticvoidmain(String〔〕args){longstartSystem。currentTimeMillis();for(inti0;i10000000;i){createInstance();}System。out。println(花费时间:(System。currentTimeMillis()start)ms);try{TimeUnit。SECONDS。sleep(1000);}catch(InterruptedExceptione){e。printStackTrace();}}}Xmx200mXms200mXX:PrintGCDetailsXX:DoEscapeAnalysis设置开启逃逸分析XX:EliminateAllocations设置不开启标量替换开启逃逸分析关闭标量替换:花费时间:93ms开启逃逸分析开启标量替换:花费时间:6ms热点代码与热点探测
  JIT编译器并不是编译所有的字节码,JIT编译器只编译热点代码
  热点代码:被多次调用的方法或方法中多次循环的循环体
  栈上替换(OSR):JIT将方法中的热点代码编译为本地机器指令(被多次执行的循环体)
  编译对象都是方法,如果是栈上替换则入口在方法的循环体开始那里
  热点探测功能决定了被调用多少次的方法能成为热点代码
  hotspot采用基于计数器的热点探测方法调用计数器:统计方法调用次数回边计数器:统计循环体执行循环次数
  方法调用时先判断是否有执行编译后的机器码,有则直接使用方法区的Codecache中的机器码;没有机器码则判断计数器次数是否超过阈值,超过则触发编译,编译后机器码存储在方法区Codecache中使用;最后都没有就使用解释执行总结
  本篇文章将围绕执行引擎,深入浅出的解析执行引擎中的解释器、即时编译器各自执行的优缺点以及原理
  执行引擎由解释器、即时编译器、垃圾收集器构成,默认情况下使用解释器与编译器的混合方式执行
  即时编译器分为C1、C2编译器,其中C1编译快但优化小,C2开启逃逸分析使用栈上分配、锁消除、标量替换进行优化,编译耗时但是优化大
  即时编译器并不是所有代码都编译,而是使用方法技术和循环计数来将热点代码编译成机器码存放在方法区的CodeCache中
  在混合执行的模式下,解释器、C1、C2编译器同时工作,分层编译

父母吵架要避开孩子么?爸妈吵架让我觉得异性不安全,不想和异性小朋友玩。爸妈吵架让我想起了恐怖片《毒液》。希望爸妈不要吵架了,不然这个家就没了。有一期节目采访了南昌某一小学的孩子,询……女排四强海报道出各队半决赛心境!李盈莹笑容满面,丁霞神色凝重2122赛季中国女排超级联赛将进入四强赛。中国排协也随即公布了本阶段的赛制以及宣传海报,四强赛将采取淘汰赛模式,3场2胜。宣传海报方面,李盈莹、丁霞、金软景和龚翔宇分别代表各自……仙剑7PS4《仙剑奇侠传7》PS45版今日正式发售,普通版售价238港元,豪华版398港元。PlayStation港服商店页面《仙剑奇侠传7》是国产单机系列游戏《仙剑奇侠传》的第九部……2022年8月5日华强北手机批发报价单今日各品牌手机报价已出,欢迎查看交流评论留言,喜欢的点击关注了解手机每日走势!苹果苹果华为一加荣耀华为苹果Solo三星JBL魅族飞利浦小米红……一汽配城发生火灾,烧毁21间仓库商户损失巨大安全生产无小事作者拉面安来源汽车服务世界(ID:asworld168)前言:最近,全国各地普遍遭遇极端高温天气,且持续周期较长,增加了汽修店汽配店的产品储存和日常施工风险,门店对……未来可以赚钱的4个行业Hello,大家好,随着世界的发展,人们对生活质量的提高,但缺点是,物价的飞速上涨,一分钱难倒英雄,何况是中国有14亿人口呢。那么,未来有几个机遇,抓住就能赚钱。淘宝刚出……即将到来的冬歇期,中超各队必将迎来降薪潮外援离队潮随着2022年的到来,跨度长达8个月的20212022赛季中超联赛终于要结束了,回顾本赛季的中超联赛可谓是一波三折!先后经历了卫冕冠军江苏苏宁的退出,天津津门虎的死而复活,2次……空气炸锅不闲置攻略5道空气炸美食手把手教学本内容来源于什么值得买APP,观点仅代表作者本人作者:艾路艾鲁空气炸锅不闲置指南来到第四弹啦!最近看到一个报导,说大部分中国人都有油脂摄入过多的问题存在,这其实与中……冬至大如年,人间小团圆,冬至养生有讲究,牢记这几点下周二是今年的冬至。冬至,农历二十四节气中排在第22位,更是冬季的第四个节气,属仲冬时节。冬至,俗称冬节、长至节等。至就是到达,达到了一个终点,也预示着达到了一个新起点一……8核变4核!欧拉汽车被诉偷换汽车芯片涉嫌欺诈,网友不要让支持中国经济周刊经济网讯据央视财经报道,上海市的周女士,11月份购买了一部欧拉好猫新能源车,最吸引她的是品牌方宣称的:搭载了高通八核车载芯片,能实现丰富的车载功能。而周女士提车后发……Vivo第二款折叠屏已在路上,8月9日至11日多款新机密集发Vivo第二款双屏下超声波指纹解锁折叠屏手机据爆料已经在路上。Vivo首款折叠屏手机XFold首发内外屏双超声波指纹解锁,这款手机比较大的遗憾就是搭载骁龙8Gen1芯片,第二款……12GB512GB5000mAh,再度跌至2199元,顶配旗想要给别人留下深刻的印象,首先自己要有突出的特点,这一点在手机行业中也是同理,除了苹果公司这种自带高热度的手机品牌之外,其它的手机品牌想要让自家手机快速被消费者们记住,最有效的……
杜兰特重摔倒地后捂住腰部!篮网奇兵爆发,13分钟狂轰4记三分NBA常规赛继续进行,篮网队前往客场迎战绿军。非常精彩的半场比赛。篮网队2节轰下62分。杜兰特继续稳定输出,米尔斯上场13分钟轰进4记三分球,替补上场的托马斯也打得不错。杜兰特……女人的气质怎么练出来?这5个小细节是关键1。良好的穿搭女人要想有好气质,首先良好的穿搭是必须不能忽视的,你可以从衣品的品质和档次上下功夫,就能轻而易举提升穿搭档次了,比如时髦的丝绒衫、得体的短裙、修身的小脚裤都……揭秘冬奥中国创意设计惊艳世界在开幕式的核心环节冰雪五环展示中,一组充满中国风的水墨动画揭示了冬季奥林匹克运动的发展历程。新华社供图北京冬奥会吸引人的不仅有体育赛事,还有美丽的视觉设计。在开幕式水墨动……我,阿里的普通员工,工作5年,透露员工的年终奖金有多少?近年来,不少大学生在毕业之后找工作的过程中都会发现,一些企业都在不断的进行相应的招聘,无论是国企还是私企,大家都会给员工较高的福利待遇,希望能够通过较高的奖金来吸引人才,而作为……枸杞哥威金斯有多牛,半场9投9中怒砍22分,劈扣森林狼老大唐养生枸杞个威金斯有多牛。11月11日。在勇士与森林狼的比赛中。枸杞哥上半场9投9中,怒砍22分。还奉献了两个十佳球,蒙面乔丹石锤了。枸杞水不泡了的威金斯有多牛,一般的比赛我们枸……胃不好不能吃馒头?医生真正会影响胃部的,是这几物不知大家有没有听说过这样一种说法,十人九胃。这句话想表达的意思是,在10个人当中有9个人,可能存在相关胃部症状,胃病作为一种发病率比较高的慢性疾病,的确困扰着人的身体健康……为什么运动员打封闭针就废了姚明队友麦迪就是现实一个案例为什么运动员打封闭针就废了封闭针其实就是把麻药跟激素混合之后,用注射器直接注入到疼痛的关节部位,这样可以控制局部的炎症,达到消肿、止痛的作用。能让场上运动员忘记疼痛,虽然……山东两位医务工作者登上冬奥会开幕式参与五星红旗传递2022年2月4日晚8时,第二十四届冬季奥林匹克运动会开幕式在国家体育场举行。在《致敬人民》环节中,一面鲜艳的五星红旗在全国108位楷模和56个民族代表手中依次传递,全国抗击新……中国国家地理,20个你不知道的城市冷知识河南篇(‘扒婆说’每天分享最冷、最新、最全面、最有趣的科普趣味冷知识!点赞加关注的人有好运!)中国国家地理之,关于20个你不知道的城市冷知识河南篇河南烩面扒婆说河南……Aqara全屋智能妙控套装新体验研究生智能宿舍里新添置HomeKit的设备Aqara全屋智能妙控套装新体验作为一个米家用户买不起homekit的设备仅仅是因为穷于是近期就有幸在ZEALERapp免费赠送……李思思海南散心近一月,为避开春晚喧闹期特意在三亚过大年聚焦艺人最新动态,传递圈内主流声音。【晓今娱】全网特供今日头条独家首发,严禁转载【本文由晓今娱原创,欢迎关注,带你一起长知识!】李思思为躲避春晚的热闹景象已到……票价670元!北京环球影城指定1。5日门票开售北青北京头条记者获悉,北京环球影城指定1。5日门票今日(11月21日)上线。北青北京头条记者在北京环球度假区官方APP上看到,门票预订一栏已经出现了北京环球影城指定1。5日门票……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网