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

Java虚拟机精讲【1.1】

1.2.4 Java虚拟机

Java 技术的核心就是 Java 虚拟机( JVM, Java Virtual Machine),因为所有的 Java 程序都运行在 Java 虚拟机内部。 JVM 之所以被称之为 VM,是因为它是由一组规范所定义出的抽象计算机。 JVM 的主要任务就是负责将字节码装载到其内部,解释/编译为对应平台上的机器指令执行,如图 1-3 所示。

Sun 公司的 HotSpot VM 应该是大多数开发人员最熟悉的一款高性能 Java 虚拟机,它是JDK 和 OpenJDK 中缺省自带的一款虚拟机,同样也是目前市面上应用最广的一款 Java 虚拟机。但这款虚拟机最早是由一家名不见经传的小公司“ Longview Technologies”研发设计出来的,后来这家公司被 Sun 公司收购后, HotSpot 虚拟机也同样被纳入麾下。

HotSpot VM 是目前市面上高性能虚拟机的代表作之一。它具备热点探测功能,可以通过此功能将一个被频繁调用的方法或者方法体中有效循环次数较多的代码块标记为“热点代码”,然后通过内嵌的双重 JIT( Just In Time Compiler)编译器将字节码直接编译为本地机器指令。在 HotSpot VM 内部,即时编译器与解释器是并存的,通过编译器与解释器的协同工作,既可以保证程序的响应时间,同时还能够提高程序的执行性能,并且对编译器的工作压力也降低了一定程度的负载。换句话说 HotSpot 是一款解释器与编译器并存的虚拟机,缺省情况下一个程序中到底有多少字节码指令是通过解释运行的,还是通过编译运行的,这就需要依赖热点探测功能。

虽然 Java 虚拟机规范并没有强制要求虚拟机内部实现一定要采用解释器和编译器并存的架构方案,但目前市面上大多数主流虚拟机都采用此架构。这是因为当虚拟机启动的时候,解释器可以首先发挥作用,而不必等待编译器全部编译完成再执行,这样可以省去许多不必要的编译时间。并且随着程序运行时间的推移,编译器逐渐发挥作用,根据热点探测功能,将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率。 HotSpot VM 中内嵌有两个 JIT 编译器,分别为 Client Compiler 和 Server Compiler,但大多数情况下我们简称为C1 编译器和 C2 编译器。开发人员可以通过命令显式指定到底使用哪一种编译器策略,缺省情况下 HotSpot 会根据操作系统版本与物理机器的硬件性能进行自动选择。 当然开发人员还可以通过命令显式指定 HotSpot VM 到底是使用完全编译策略,还是完全解释策略,如果我们将虚拟机选定为完全解释策略,那么编译器将停止所有的工作,字节码将完全依靠解释器逐行解释执行。反之也可以选用完全编译策略,但解释器仍然会在编译器无法进行的特殊情况下介入执行,这主要是确保程序能够最终顺利执行,

http://www.jsqmd.com/news/667024/

相关文章:

  • 手把手教你用OWASP ZAP给HTTPS网站做安全体检:解决证书告警与代理配置的那些坑
  • Illustrator批量替换神器:ReplaceItems.jsx从入门到精通
  • ShiroAttack2:企业级Shiro反序列化漏洞检测与响应解决方案
  • ConvNeXt 系列改进:2026前沿趋势:当 ConvNeXt 遇上 Mamba,探索纯卷积与状态空间模型的混合架构优势
  • 揭秘2026奇点大会闭门圆桌争议焦点:AGI是否正在杀死“人设运营”?3个已被验证的生存策略
  • 综述 锂电电解液中碳酸酯类添加剂
  • 别再乱点CarSim2019菜单了!搞懂Datasets和Libraries联动逻辑,悬架仿真效率翻倍
  • 【MQTT安全实践】从零构建用户密码认证体系:原理、配置与ESP8266实战
  • Claude Design 登场,设计工具分化,Figma“Sketch 时刻”将至?
  • 产品路线图管理化技术中的产品路线图计划产品路线图实施产品路线图验证
  • 5分钟掌握Input Leap:免费开源KVM软件跨平台键鼠共享终极指南
  • FPGA等精度测频实战:手把手教你复刻电子竞赛频率计(含Verilog代码与SignalTap调试)
  • 告别‘升级恐惧症’:一个老Delphi程序员眼中的RAD Studio 11新特性与实战价值
  • 2026年商用菜刀品牌专业推荐:从工艺性能维度梳理行业主流品牌选型参考 - 商业小白条
  • Phi-4-mini-reasoning生产环境部署:Docker镜像免配置+GPU资源隔离方案
  • 深度解析LinkSwift:八大网盘直链解析引擎的技术架构与实战应用
  • Windows Cleaner:三招解决C盘爆红,让Windows系统重获新生
  • 别死记硬背了!我把蓝桥杯‘暴力枚举’考点画成了这张思维导图(附Python代码)
  • Day52变量和函数提升
  • FLUX.1-dev旗舰版体验:内置WebUI,输入文字秒出高清壁纸级图片
  • OpenCore高级实战:5步解决Hackintosh安装核心难题
  • 怎么通过编写微信小程序赚钱?合法合规
  • Win11Debloat终极指南:快速清理Windows系统臃肿,提升性能70%
  • 抖音批量下载神器:免费无水印下载工具的终极使用指南
  • Fish Speech 1.5语音合成质量门禁:MOS<4.0自动拦截、触发人工复核机制
  • 刷题记录表-3
  • 用Go语言实现一个简易分布式缓存(附源码)
  • Kindle漫画转换终极指南:5步实现完美电子阅读体验
  • PDMS Pipeline Tool 避坑指南:搞定MTO材料表报错(从E10030到W13050全解析)
  • 基于STM32的带云台智能小车图像识别系统