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

通州网站建设站开发评价广告点击一次多少钱

通州网站建设站开发评价,广告点击一次多少钱,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.yayakq.cn/news/358174/

相关文章:

  • 娱乐网站排行榜南昌市 做网站的公司
  • 免费公司注册网站吗小程序线上商城
  • 网站设计的规范网站建设服务费 印花税
  • 网站开发语言用什么好百度推广怎么运营
  • 大数据网站建设和电子商务网站制作
  • 关于江西建设监督网网站迁移通辽做网站
  • 网站升级通知安卓市场下载官网
  • 做视频网站都需要什么虾子酱 wordpress
  • 做门户类网站多少钱广州最好的网站建设
  • 万户网站协作管理系统百度推广方案怎么写
  • 哈尔滨网站建设排oa系统软件
  • asp手机网站模板适合员工的培训课程
  • 算命网站开发电话网站建设合同属于
  • 北京网站建设公司有哪些建网站的英文
  • 租房平台网站开发最经济 网站建设
  • 做网站先买域名优化教程网
  • 建设网站的协议范本个人网站系统
  • wordpress 做大型网站山东建设工程执业证书查询网站
  • 个人做购物网站犯法吗山东郓城住房和城乡建设厅网站
  • 盘锦网站推广数字资产交易网站建设
  • 云平台网站叫什么深圳网站建设找哪家好
  • 上海建网站工作室政务网站建设工作总结
  • 锁定网站导航栏宁波seo推广联系方法
  • 做设计用图片的网站怎样做网站快照
  • 企业网站建设该入啥会计科目网络规划与设计期末考试题及答案
  • h5网站开发实例教程淘宝做网站的店
  • 潍坊网站建设 APP开发小程序做网站设计网站建设推广
  • 网站维护一般需要多久时间wordpress define
  • 做标签网站刷单宝安沙井天气
  • 商场设计网站装潢公司设计效果图