JVM工作原理与实战(一):初识JVM

专栏导航

JVM工作原理与实战

RabbitMQ入门指南

从零开始了解大数据


目录

专栏导航

前言

一、JVM概念

二、JVM的三大核心功能

1.内存管理

2.解释执行虚拟机指令

3.即时编译

三、常见的JVM虚拟机

1.HotSpot

2.GraalVM

3.Dragonwell JDK 龙井

4.Eclipse OpenJ9

总结


前言

JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。同时,JVM还具备动态优化功能,可以根据实际运行情况进行调整和优化。本文主要介绍了JVM的概念、JVM的三大核心功能、常见的JVM虚拟机等内容。


一、JVM概念

JVM,全称Java Virtual MachineJava虚拟机),是一个运行在计算机上的程序,其核心任务是运行Java字节码文件。Java字节码是一种中间代码,它是由Java源代码编译而来,但并非直接运行在硬件或操作系统上,而是通过JVM来解释或编译执行。这一设计使得Java能够在任何支持JVM的平台上运行,真正实现了“一次编写,到处运行”的理念。

JVM工作原理与实战(一):初识JVM_第1张图片

二、JVM的三大核心功能

1.内存管理

JVM的内存管理是整个虚拟机中非常重要的部分。其负责管理堆内存,这是JVM中用于动态分配内存的区域。当Java程序创建对象时,JVM会在堆上为该对象分配内存。这种分配是动态的,意味着可以根据需要调整内存的大小。

堆内存的管理涉及到两个主要方面:对象的创建对象的销毁。当一个对象被创建时,JVM会在堆上为其分配内存。这个过程涉及到内存的分配和初始化,确保对象能够正确地存储数据。而当对象不再被引用,或者程序结束时,JVM会自动回收这些内存,以释放资源。

内存管理还包括垃圾回收(Garbage Collection, GC)机制。垃圾回收器自动检测并清除那些不再被引用的对象,释放其占用的内存。这一过程是为了防止内存泄漏,并确保系统的稳定运行。

2.解释执行虚拟机指令

解释执行是JVM执行Java字节码的一种方式。Java源代码在编译时会被转换成字节码,这是一种中间代码,它不直接对应任何特定的硬件架构。然后,JVM通过解释器逐条解释这些字节码并执行相应的操作。

解释执行的优势在于它的跨平台性。由于字节码是中间代码,无论在哪种操作系统或硬件平台上,只要安装了对应的JVM,就可以运行Java程序。这极大地提高了Java的跨平台能力。

然而,解释执行也有其缺点,主要是执行速度相对较慢。为了提高程序的执行效率,一些高级的JVM会使用即时编译(JIT)技术。

3.即时编译

即时编译(Just-In-Time)是一种优化技术,它在程序运行时将热点代码编译成本地机器码。这些热点代码通常是频繁执行的代码片段,将它们编译成本地代码可以显著提高执行速度。

即时编译的优势在于它能够根据运行时的实际情况进行优化。JVM可以监测代码的执行情况,识别出那些频繁执行的热点代码,然后将其编译成本地机器码。这不仅提高了执行速度,而且减少了解释器的工作负担。

即时编译的实现通常包括两个步骤:编译优化。编译是将字节码转换成机器码的过程,而优化则是在编译的基础上进一步提高代码的执行效率。通过即时编译,JVM能够在运行时动态地调整和优化代码的执行,从而提高程序的性能。

​​JVM工作原理与实战(一):初识JVM_第2张图片

三、常见的JVM虚拟机

常见的JVM:

名称 公司 支持版本 社区活跃度 特性 适用场景

HotSpot

(Oracle JDK版)

Oracle 所有版本

使用最广泛,稳定可靠,社区活跃

JIT支持

Oracle JDK默认虚拟机

默认

HotSpot

(Open JDK版)

Oracle 所有版本

同上

开源,Open JDK默认虚拟机

默认

对JDK有二次开发需求

GraalVM Oracle

11, 17,19

企业版支持8

多语言支持

高性能、JIT、AOT支持

微服务、云原生架构

需要多语言混合编程

Dragonwell JDK

龙井

Alibaba

标准版 8,11,17

扩展版11,17

基于OpenJDK的增强

高性能、bug修复、安全性提升

JWarmup、ElasticHeap、Wisp特性支持

电商、物流、金融领域

对性能要求比较高

Eclipse OpenJ9

(原 IBM J9)

IBM 8,11,17,19,20

高性能、可扩展

JIT、AOT特性支持

微服务、云原生架构

1.HotSpot

HotSpot是由Oracle(原Sun Microsystems)开发的一款高性能的JVM,被广泛使用。为了提高Java程序的执行效率,HotSpot虚拟机采用了多种优化技术,其中最核心的是即时编译技术。此外,HotSpot虚拟机还支持一种称为“混合编译”的优化技术,它将解释执行和即时编译结合起来,进一步优化程序的性能。

除了即时编译技术外,HotSpot虚拟机还具有其他高性能特性。它优化了垃圾回收器和内存管理器,为Java程序提供了高效、稳定的运行环境。这些特性共同作用,使HotSpot成为高性能、可扩展的JVM,广泛适用于各种应用程序和场景。

2.GraalVM

GraalVM是一个高性能的运行时环境,可以运行多种语言的程序,包括Java、JavaScript、Python等。它旨在提供一种统一的运行时环境,以支持各种不同的编程语言和框架。

GraalVM通过使用即时编译和垃圾回收技术来提高程序的执行效率。它还提供了一种称为“Truffle”的框架,用于实现自定义语言的解释器和编译器。通过Truffle框架,开发者可以使用高级语言编写程序,并利用GraalVM的高性能特性来运行它们。

除了高性能的即时编译和垃圾回收功能外,GraalVM还支持多种语言的互操作性。这意味着开发者可以在同一个应用程序中使用不同的编程语言,并轻松地调用和交互它们的功能。这种互操作性使得GraalVM成为一种灵活、高效的多语言运行时环境。

3.Dragonwell JDK 龙井

Dragonwell JDK是阿里巴巴提供的一款功能增强版的JVM。它基于HotSpot虚拟机进行了一些优化和增强,旨在提高Java程序的性能和稳定性。

Dragonwell JDK通过优化HotSpot虚拟机的内部机制来提高Java程序的执行效率。它涉及对垃圾回收器、即时编译器和其他核心组件的调整和改进。这些优化旨在提高程序的启动速度、运行时的性能以及减少资源消耗。

除了性能优化外,Dragonwell JDK还提供了一些额外的功能和工具,以增强开发者的体验和应用程序的质量。其中包括对特定于中国市场的特性的支持、更好的调试和监控工具以及对最新Java版本的早期支持等。

4.Eclipse OpenJ9

OpenJ9是IBM开发的一款高性能的JVM,它不仅支持Java SE标准,还提供了强大的垃圾回收和诊断工具。作为一款专为企业级应用打造的高性能JVM,OpenJ9致力于为应用程序提供稳定、高效的运行环境。

OpenJ9虚拟机具有优化的垃圾回收机制,可以有效地管理内存并减少内存泄漏的风险。它还提供了一套丰富的诊断工具,帮助开发者和系统管理员监控和调试Java应用程序。这些工具包括性能分析器、内存监视器和线程分析器等,可以帮助开发者分析程序的性能瓶颈和解决潜在问题。

OpenJ9在大型企业级应用和关键任务应用中得到了广泛应用。它被认为是一种可靠、高性能的JVM选择,适用于需要高可用性和可扩展性的应用程序场景。


总结

JVM是Java程序的运行环境,负责字节码解释、内存管理、安全保障、多线程支持、性能监控和跨平台运行。本文主要介绍了JVM的概念、JVM的三大核心功能、常见的JVM虚拟机等内容,希望对大家有所帮助。

你可能感兴趣的:(JVM工作原理与实战,jvm,java,后端)