先了解下背景

有点丑 缺少设计细胞 凑合凑合看吧

大家好!又来给大家分享干货了!今天就简简单单把JIT打下来。

Java具有强大跨平台能力,是由于JVM为我们屏蔽了操作系统和硬件层面的差异,我们看下上图,编写的 .Java 文件经过第一次编译(这里称之为第一次编译以区分即时编译)成 .class 字节码文件,该字节码文件为JVM能够识别的文件,通过类加载器将字节码加载到JVM内存,进一步实现类加载的全过程(加载、链接、初始化),当Java运行时,将字节码的内容通过解释器翻译为硬件能够识别的机器码并执行,因此解释器的作用就是读取字节码指令、翻译为机器码,并执行这三个步骤,这是我们会发现,如果相同的代码块或者方法反复读取和翻译为机器码反复被执行,是对资源的浪废,并且耗时.因此,JIT(即时编译器)应运而生。

什么是JIT(Just-In-Time)?

当虚拟机发现某个方法或者代码块运行的特别频繁,就会将这些代码认定为热点代码,为了提升热点代码的执行效率,在运行时,虚拟机将这些代码编译(第二次编译)成本地机器码.(这里是将字节码转换为机器码),缓存起来,以尽各种手段尽可能的进行代码优化,运行时,完成这个任务的后端编译器称之为即时编译器,即JIT。

解释器与即时编译器

那是不是有了JIT,就不需要解释器了呢?

程序需要迅速启动或者运行时,解释器首先发挥作用,省去编译的时间,立即运行,随着时间的推移,编译器发挥作用将越来越多的代码编译成本地代码(机器码).

为什么编译器要随着时间的推移才发挥作用呢?

我认为是有两点,第一,毕竟内存是有限的资源,随着时间的推移才能发现热点代码?对JVM sever模式,代码执行上万次才称之为热点代码,第二解释器为编译器收集性能监控信息为编译器编译优化提供了依据.

总之,解释器在java运行时翻译执行,节约内存,而JIT将热点代码编译并缓存,提升执行效率,两者配合完成到机器码的转换执行。

解释器与JIM混合使用的时候,成为Mixed模式,当然也可以通过启动参数-Xint或-Xcomp来控制解释编译模式.通过java -version可以查看虚拟机的默认启动模式。

即时编译器的种类

Java内置了两款即时编译器,客户端编译器(c1编译器)和服务端编译器(c2编译器),c1适用于启动速度敏感的应用,比如桌面应用.c2适用于长时间运行的服务端应用.在JDK7默认启用分层编译,两者配合工作,用c1有更高的编译速度,用c2有更好的编译质量.

写的不咋滴 就凑合凑合看吧 觉得不行的 有能耐自己写 bbll的话就不要说了 技术有限

jit和jitx区别_JIT是什么东西 分分钟打下来!相关推荐

  1. jit和jitx区别_JIT的核心思想是什么?

    2011-12-09 JIT生产方式的含义与特点有哪些? 丰田汽车公司的一种生产管理方法.它的基本思想可用现在已广为流传的一句话来概括,即"只在需要的时候,按需要的量生产所需的产品" ...

  2. jit和jitx区别_JIT模式

    采购是指企业为实现企业销售目标,在充分了解市场要求的 情况下,根据企业的经营能力,运用恰当的采购策略和方法,取 得营销对路商品的经营活动过程. 采购成本是商品的成本与采购 过程中所耗各项费用之和. 采 ...

  3. jit和jitx区别_JIT,JIS间的区别是什么?

    展开全部 JIS就是JIT一种极端表现形势,对于配送零件的精细要求更高,两者的差别是:通过JIT达到无库存或者库e5a48de588b632313133353236313431303231363533 ...

  4. jit和jitx区别_JIT和JIS

    随着汽车整车厂对其供应商提出了模块化供货( Modular Supply )或 JIS ( Just In Sequence )的要 求,很多整车厂的供应商已经开始实施精益 JIS 系统, JIS 系 ...

  5. jvm与jit编译器的区别_了解jvm和jit编译器的第1部分

    jvm与jit编译器的区别 Hello people!! 大家好!! I can see that the Java community is growing a lot but there are ...

  6. 单线程和多线程的区别_谷歌下载东西超慢?开启Chrome多线程下载,下载速度提升10倍+...

    用谷歌浏览器下载速度慢,浏览器采用的是单线程下载,"一人难敌四手"的浏览器自然斗不过多线程了.所以说浏览器想要提高下载速度,就得采用多线程的下载方式,不过到目前为止,Chrome多 ...

  7. jit 方法内联_JIT编译器,内联和转义分析

    jit 方法内联 即时(JIT) 即时(JIT)编译器是Java虚拟机的大脑. JVM中对JIT编译器的影响最大. 一会儿,让我们退后一步,看看已编译和未编译语言的示例. 诸如Go,C和C ++之类的 ...

  8. torch.jit.trace与torch.jit.script的区别

    文章目录 术语 什么时候用torch.jit.trace(结论:首选) 优点 什么时候用torch.jit.script(结论:必要时) 错误举例 动态控制 输入和输出有丰富类型的模型需要格外注意 Q ...

  9. c++面试 掌握的东西总结

    长文警告⚠ 至少要读1小时!!!!建议先收藏 各位取其精华,有不对的,望指出,也有写不够详细,只是小总结. 自己亲手制作,伴随我整个找工作过程,不喜勿喷,喜欢就收藏和点赞,我都是各种手机总结,错误之处 ...

最新文章

  1. linux receive函数,Linux网络 - 数据包的接收过程
  2. mybatis mysql rownum_MyBatis怎样实现MySQL动态分页?
  3. 平衡二叉树(AVL)实现(3)-删除
  4. 中小型局域网构建实践 PDF高清版
  5. TransmittableThreadLocal
  6. 【Modern OpenGL】Shader
  7. Chapter1-3_Speech_Recognition(CTC, RNN-T and more)
  8. Eratosthenes筛
  9. .net ServiceStack.Redis 性能调优
  10. Winform程序在VS中打包成安装程序(带卸载)
  11. 卡巴斯基提供升级包 解决病毒库升级
  12. order by case when 使用方法
  13. My IDEA Keymap
  14. 梦中香巴拉——云南游记
  15. NMS(Non-Maximum Suppression,非极大值抑制)解析
  16. python-etl框架bonobo使用入门
  17. codeforces:D. Sea Battle【跳跃性思维 + 贪心 + 逆向思维】
  18. linux网卡断流测试,RouterOS断流解决办法探讨
  19. 揭秘朝鲜自主操作系统:红星Red Star
  20. MySQL学习(一)——常用语句

热门文章

  1. JZOJ 5426 Galo
  2. 2019个人成长计划
  3. 能够翻译文档的免费软件-免费翻译整个文档的软件
  4. 基于android的互动健身平台,基于Android和ARM的智能健身系统的设计与实现
  5. yii2授权之ACF
  6. 老李玩微博经验分享之如何发微博
  7. 微信公众号图文如何插入Excel表格
  8. node 对接微信支付的踩坑记录(服务端)
  9. put请求400状态码
  10. 混合波束成形| 通过天线空间方向图理解波束成形的物理意义