JVM 概述

JVM概述

JVM的全为 Java Virtual Machine,但是目前的 JVM 已经不再与任何语言进行深度耦合了,其本质就是运行在计算机上的程序,职责是运行处理 Java 字节码文件。

JVM 功能

解释和运行

JVM 会对字节码文件中的指令,实时的解释为机器码,在计算机上执行。

内存管理

  1. JVM 会自动为对象、方法等分配内存。
  2. JVM 的自动垃圾回收机制,会及时回收不再使用的对象,减少内存不必要的占用。

即时编译(JIT:Just In Time)

JVM 会对热点代码进行优化,可以大大提升 Java 代码的执行效率。

因为 Java 语言为了支持跨平台特性,需要进行实时解释。

一份同样的字节码文件,在Windows、Linux等不同的操作系统,会根据其环境的JDK,将字节码解释成该系统能够执行的机器码,然后才会交给底层的操作系统去执行。正因如此,如果 Java 不做任何处理,其性能不如 C、C++ 等语言。

为了解决这个问题,Java 会将热点代码字节码指令(即会被多次执行的代码片段),将其解释优化成机器码之后先保存在内存中一份,等到下一次执行的时候,就直接从内存中取出已经编译好的机器码直接使用,这样就会大大提高效率。

常见的JVM

名称 作者 支持版本 社区活跃度(github star) 特性 适用场景
HotSpot (Oracle JDK版) Oracle 所有版本 高(闭源) 使用最广泛,稳定可靠,社区活跃JIT支持Oracle JDK默认虚拟机 默认
HotSpot (Open JDK版) Oracle 所有版本 中(16.1k) 同上开源,Open JDK默认虚拟机 对JDK有二次开发需求
GraalVM Oracle 11,17,19企业版支持8 高(18.7k) 多语言支持高性能、JIT、AOT支持 微服务、云原生架构需要多语言混合编程
Dragonwell JDK 龙井 Alibaba 标准版8,11,17扩展版11,17 低(3.9k) 基于OpenJDK的增强高性能、bug修复、安全性提升JWarmup、ElasticHeap、Wisp特性支持 电商、物流、金融领域对性能要求比较高
Eclipse OpenJ9 (原IBMJ9) IBM 8,11,17,19,20 低(3.1k) 高性能、可扩展JIT、AOT特性支持 微服务、云原生架构

JVM 的组成

  • 类加载器:加载 class 字节码文件中的内容到内存中。
  • 运行时数据区:负责管理 JVM 使用到的内存,例如创建对象和销毁对象时的内存管理。
  • 执行引擎:将字节码文件中的指令解释为机器码,同时使用即时编译器优化性能。
  • 本地接口:JVM 有的采用 C/C++ 语言进行编写,所以需要调用本地提供的已经编译的方法,这些方法并不存在于字节码文件中。
相关推荐
铁皮饭盒3 分钟前
@kognitivedev/rag, 用js做AI Agent开发
javascript·后端
IT_陈寒13 分钟前
JavaScript的默认参数挖坑实录,我掉进去了
前端·人工智能·后端
陈明勇1 小时前
Go 1.26 新特性回顾:语言增强、工具升级与 Green Tea GC 默认启用
后端·go
咖啡八杯11 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式
lizhongxuan12 小时前
AI Agent 上下文压缩利器 Headroom
后端
Csvn14 小时前
SSH 远程管理与安全加固 — 运维的守门之道
后端
IT_陈寒14 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
菜鸟谢16 小时前
Rust 智能指针完整详解
后端
菜鸟谢16 小时前
Rust 函数完整知识点详解
后端
爱勇宝16 小时前
淡泊名利之前,先承认我们都很焦虑
前端·后端·程序员