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

JVM(五)-- 执行引擎

目录

前言

一、概述

二、Java代码编译和执行的过程

​1. 解释器

2. JIT编译器

3. JIT分类

三、总结


前言


一、概述

二、Java代码编译和执行的过程

可以把 javac编译(源代码 -> 字节码)理解为“前端编译”,而 JIT 编译(字节码 -> 机器码)则是“运行时编译”或“后端编译”。两者分工明确,JIT 编译器的工作对象始终是字节码。

解释器和JIT编译器虽然都负责将字节码转换为机器指令,但它们在工作原理、性能特点和适用场景上有着本质的区别。两者的区别如下表所示:

特性维度

解释器 (Interpreter)

JIT 编译器 (Just-In-Time Compiler)

执行方式

逐条解释执行字节码,翻译一条执行一条

热点代码整体编译为本地机器码后执行

编译时机

运行时边解释边执行

运行时进行编译(热点代码达到阈值后)

执行速度

较慢(每次执行都需翻译)

编译后执行速度​(直接执行机器码)

启动速度

​(无需编译过程)

相对较慢(需要预热和编译时间)

内存占用

较低(不存储编译结果)

较高(需存储编译后的机器码)

代码优化

无或少量优化

进行深度优化​(如内联、逃逸分析等)

应用场景

启动阶段、执行次数少的代码

频繁执行的热点代码​(如循环、高频方法)

1. 解释器

2. JIT编译器

HotSpot虚拟机采用解释器与JIT编译器并存的架构。

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

Java方法执行过程如下图所示:

首先看该方法是否已被JIT进行编译,若被编译,则直接执行编译之后的机器码;如果没有,则方法调用计数器加1,如果超过阈值,JIT解释器就进行编译,然后将编译结果放到代码缓存区中。如果没有超过阈值,则利用解释器一行一行进行解释执行。

3. JIT分类

总结:

1.一般来说,JIT编译出来的机器码性能比解释器要高

2. C2编译器的启动时长比C1编译器慢,但系统稳定执行之后,C2编译器执行速度远远快于C1编译器。

三、总结

关于执行引擎可以用下面这个图来进行概括:

http://www.dtcms.com/a/390636.html

相关文章:

  • 微算法科技(NASDAQ:MLGO)量子架构搜索技术:突破变分量子算法性能瓶颈,实现量子计算的鲁棒优化
  • 海亮科技亮相第十一届亚教展,“教育 + AI”赋能县域教育振兴
  • JMeter的配置元件
  • Charles与Postman、JMeter结合使用教程:高效接口调试与性能测试方案
  • 【Haddop】Hive的离线分析与Sqoop的数据集成
  • 嵌入式 Linux 基础入门笔记(1)
  • Starlink 2.0与3GPP NTN技术对比分析:颠覆性优势与产业格局重构
  • 鸿蒙Next用户文件管理全解析:安全、高效、跨设备的未来体验
  • 简形电力JX2202 智能测试系统:重构新能源电力检测效率标准
  • AI识别视频中动物与人物的技术深度解析
  • iOS 上架完整流程指南 苹果应用发布步骤、App Store 上架流程
  • MySQL-CRUD 操作及常用查询语法详解
  • 玳瑁的嵌入式日记---0919(ARM)
  • Objective-C —— APIs declaration 自定义
  • 【XTDrone】笔记5:control文件详解
  • 抓包的那些事,抓包的原理、常见场景、工具比较与实战排查流程(抓包步骤、iOS 抓包、HTTPS 抓包技巧)
  • 软件工程实践八:Web 前端项目实战(SSE、Axios 与代理)
  • 【常见集合】ArrayList与LinkedList
  • IPD流程实战:如何跨领域应用IPD思维?
  • Archery:开源、一站式的数据库 SQL 审核与运维平台
  • 北斗GNSS在地质灾害监测中的变形监测技术与应用解析
  • C语言题目:用“*”作为元素打印菱形
  • Redis的java客户端(SpringDataRedis)
  • Amazon Aurora DSQL:分布式无服务器数据库的下一场革命
  • TVS管频繁损坏,是参数错选还是布局出问题?-ASIM阿赛姆
  • 论文阅读:TEMPORAL GRAPH NETWORKS FOR DEEP LEARNING ON DYNAMIC GRAPHS
  • 医疗行业淘汰赛开始了?医疗器械售后维修是否会有影响?
  • 第二部分:VTK核心类详解(第40章 vtkIdList ID列表类)
  • Elasticsearch的自定义score评分
  • 【软考-系统架构设计师】架构权衡分析方法(ATAM)