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++ 语言进行编写,所以需要调用本地提供的已经编译的方法,这些方法并不存在于字节码文件中。
相关推荐
讳疾忌医丶6 分钟前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
郑州光合科技余经理29 分钟前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
毅炼29 分钟前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
梦想平凡1 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
sunshine22 girl2 小时前
Idea中如何搜索
java·ide·intellij-idea
猫吻鱼2 小时前
【AI 01】【Spring AI 基础使用】
java·spring·spring ai
梨涡泥窝2 小时前
基于SSM的校园二手交易平台的设计与实现
java·tomcat
许彰午3 小时前
44-useRowSet镜像实现
java·低代码·架构
bamboolm3 小时前
springboot+Ollama整合
java·ollama
我不会起名字3224 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣