当前位置: 首页 > news >正文

北京终端区优化武汉seo培训

北京终端区优化,武汉seo培训,怎么做照片网站,wordpress页面美化文章目录 1. 执行引擎的工作流程2. 解释器、JIT及时编译器3. 热点代码及探测技术4. HotSpotVM 中 JIT 分类 执行引擎属于 JVM 的下层,里面包括解释器、及时编译器、垃圾回收器 JVM 的主要任务是负责 装载字节码到其内部,但字节码并不能够直接运行在操作…

文章目录

  • 1. 执行引擎的工作流程
  • 2. 解释器、JIT及时编译器
  • 3. 热点代码及探测技术
  • 4. HotSpotVM 中 JIT 分类

执行引擎属于 JVM 的下层,里面包括解释器、及时编译器、垃圾回收器
在这里插入图片描述
JVM 的主要任务是负责 装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被 JVM 所识别的字节码指令、符号表,以及其他辅助信息。
那么,如果想要让一个 Java 程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令.才可以。

1. 执行引擎的工作流程

  1. 执行引擎在执行的过程中究竟需要执行什么样的字节码指令完全依赖于 PC 寄存器。
  2. 每当执行完一项指令操作后,PC 寄存器就会更新下一条需要被执行的指令地址。
  3. 当然方法在执行的过程中,执行引擎有可能会通过存储在局部变量表中的对象引用准确定位到存储在 Java 堆区中的对象实例信息,以及通过对象头中的元数据指针定位到目标对象的类型信息。
    在这里插入图片描述

2. 解释器、JIT及时编译器

在这里插入图片描述

解释器工作机制
解释器真正意义上所承担的角色就是一个运行时“翻译者”,将字节码文件中的内容“翻译”为对应平台的本地机器指令执行。

当一条字节码指令被解释执行完成后,接着再根据 PC 寄存器中记录的下一条需要被执行的字节码指令执行解释操作。

JIT 编译器
(直接编译成机器码,但是要知道不同机器上编译的机器码是不一样,而字节码是可以跨平台的)。现代虚拟机为了提高执行效率,会使用即时编译技术(JIT,Just In Time)将方法编译成机器码后再执行

3. 热点代码及探测技术

当然是否需要启动 JIT 编译器将字节码直接编译为对应平台的本地机器指令,则需要根据代码被调用执行的频率而定。关于那些需要被编译为本地代码的字节码,也被称之为“热点代码”,JIT 编译器在运行时会针对那些频繁被调用的“热点代码”做出深度优化,将其直接编译为对应平台的本地机器指令,以此提升 Java 程序的执行性能。

采用基于计数器的热点探测,HotSpot VM 将会为每一个方法都建立 2 个不同类型的计数器,分别为方法调用计数器(Invocation Counter)和回边计数器(Back Edge Counter)。

  • 方法调用计数器用于统计方法的调用次数
  • 回边计数器则用于统计循环体执行的循环次数

方法调用计数器:这个计数器就用于统计方法被调用的次数,它的默认阀值在 Client 模式下是 1500 次,在 Server 模式下是 10000 次。超过这个阈值,就会触发 JIT 编译。
回边计数器:它的作用是统计一个方法中循环体代码执行的次数,在字节码中遇到控制流向后跳转的指令称为“回边”(Back Edge)。显然,建立回边计数器统计的目的就是为了触发 OSR 编译。栈上替换,或简称为OSR(On Stack Replacement)编译。


  • -Xint`:完全采用解释器模式执行程序;
  • -Xcomp:完全采用即时编译器模式执行程序。如果即时编译出现问题,解释器会介入执行
  • -Xmixed:采用解释器+即时编译器的混合模式共同执行程序。

4. HotSpotVM 中 JIT 分类

JIT 的编译器还分为了两种,分别是 C1 和 C2,在 HotSpot VM 中内嵌有两个 JIT 编译器,分别为 Client Compiler 和 Server Compiler,但大多数情况下我们简称为 C1 编译器 和 C2 编译器。

C1 和 C2 编译器不同的优化策略:
在不同的编译器上有不同的优化策略,C1 编译器上主要有方法内联、去虚拟化、冗余消除

  • 方法内联:将引用的函数代码编译到引用点处,这样可以减少栈帧的生成,减少参数传递以及跳转过程
  • 去虚拟化:对唯一的实现类进行内联
  • 冗余消除:在运行期间把一些不会执行的代码折叠掉

C2 的优化主要是在全局层面,逃逸分析(前面讲过,并不成熟)是优化的基础。基于逃逸分析在 C2 上有如下几种优化:

  • 标量替换:用标量值代替聚合对象的属性值
  • 栈上分配:对于未逃逸的对象分配对象在栈而不是堆
  • 同步消除:清除同步操作,通常指 synchronized

一般来讲,JIT 编译出来的机器码性能比解释器高。C2 编译器启动时长比 C1 慢,系统稳定执行以后,C2 编译器执行速度远快于 C1 编译器

http://www.zhongyajixie.com/news/65908.html

相关文章:

  • 汕头 网站设计营销手机系统安装
  • 自己做一个网站seo搜索优化工具
  • 网站建设的网络公惠州seo
  • 网站建设_网站设计 app制作安徽网站开发哪家好
  • 国际商业网站个人网页设计
  • 凤岗金属制品东莞网站建设技术支持手机优化软件排行
  • wordpress模板文件是那个关键词搜索引擎优化推广
  • 定制网站开发公司广东省人大常委会
  • 网站开发 js今日热点新闻
  • 深圳 倡导居家办公优化网站搜索排名
  • 聊城集团网站建设报价网站推广排名服务
  • 什么网站上做奥数题优化大师app下载安装
  • wordpress 更换编辑器seo是做什么的
  • 网站备案 如何填最知名的网站推广公司
  • asp.net小型网站开发seo推广营销公司
  • wordpress图片添加标签疫情优化调整
  • 商城网站建设是 什么外贸营销型网站制作
  • 贵州省政府门户网站建设广告软文营销平台
  • jsp借书网站开发企业推广策划公司
  • dede如何制作网站地图百度开户推广
  • 网络营销方式的优缺点seo俱乐部
  • 怎么建设一个公司网站百度网址大全
  • 邢台做移动网站价格表it培训
  • 奥运网站模板网站批量收录
  • 思明自助建站软件google app下载
  • 江苏做网站公司有哪些合肥网站推广公司
  • 服装网站建设开发语言互联网营销公司
  • 牡丹江网站seo优化设计三年级上册答案
  • 中国机械加工最多的地方丁的老头seo博客
  • 广州网站建设联系电话如何优化网络延迟