news 2026/4/19 17:33:25

Java虚拟机精讲【1.1】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 到底是使用完全编译策略,还是完全解释策略,如果我们将虚拟机选定为完全解释策略,那么编译器将停止所有的工作,字节码将完全依靠解释器逐行解释执行。反之也可以选用完全编译策略,但解释器仍然会在编译器无法进行的特殊情况下介入执行,这主要是确保程序能够最终顺利执行,

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 17:29:01

Python-OpenCV图像保存实战:imwrite参数全解析与格式优化指南

1. 为什么imwrite参数优化如此重要? 当你用OpenCV处理完一张图片——比如给女朋友P了个完美的自拍,或者给老板做了份带标注的产品检测报告——最后总得保存成文件吧?这时候cv2.imwrite()就像个魔法盒子,但很多人随手一用就发现&am…

作者头像 李华
网站建设 2026/4/19 17:28:55

深入Linux帧缓冲:从dd清屏到mmap绘图,/dev/fb0开发入门指南

深入Linux帧缓冲:从dd清屏到mmap绘图,/dev/fb0开发入门指南 在嵌入式系统和底层图形开发中,Linux帧缓冲设备(/dev/fb0)扮演着关键角色。它提供了一种不依赖X Window或Wayland等高级图形系统的直接硬件访问方式&#xf…

作者头像 李华
网站建设 2026/4/19 17:27:57

5个微观经济学必考公式图解:从边际效用递减到谷贱伤农

5个微观经济学必考公式图解:从边际效用递减到谷贱伤农 期末考试临近,翻开微观经济学教材,满眼都是密密麻麻的公式和概念,是不是感觉头大?别担心,这篇文章将用最直观的图解和生活化案例,帮你彻底…

作者头像 李华
网站建设 2026/4/19 17:27:55

用FPGA和Verilog做个电子时钟:基于4位数码管的完整项目实战(含PLL配置)

基于FPGA的4位数码管电子时钟:从模块设计到系统整合实战 第一次接触FPGA开发板时,看到那些闪烁的LED和跳动的数码管,总有种想要亲手实现一个完整电子时钟的冲动。不同于简单的计数器实验,一个真正的电子时钟需要考虑时、分、秒的进…

作者头像 李华