【JVM】初步认识Java虚拟机


🐌个人主页: 🐌 叶落闲庭

💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


JVM

  • 一、初识JVM
    • [1.1 什么是JVM](#1.1 什么是JVM)
    • [1.2 JVM的功能](#1.2 JVM的功能)
      • [1.2.1 解释和运行](#1.2.1 解释和运行)
      • [1.2.2 内存管理](#1.2.2 内存管理)
      • [1.2.3 即时编译](#1.2.3 即时编译)
      • [1.2.4 JVM 即时编译功能原理](#1.2.4 JVM 即时编译功能原理)
    • [1.3 常见的JVM](#1.3 常见的JVM)

一、初识JVM

1.1 什么是JVM

JVM全称是Java Virtual Machine,中文译名Java虚拟机,JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件,在字节码文件中包含了一连串的指令,这个指令就是字节码指令,这些指令是无法直接在计算机上运行的,因为计算机只能识别机器码,而Java虚拟机就负责将字节码转换成机器码从而让电脑识别,这个过程被称为解释,相当于将一门语言翻译成另一门语言。



1.2 JVM的功能

1.2.1 解释和运行

Java虚拟机可以将字节码文件中的指令实时的解释成机器码,让计算机执行

1.2.2 内存管理

  • 自动为对象、方法等分配内存
  • 自动的垃圾回收机制,回收不再使用的对象,不用像C/C++那样需要手动释放空间,降低了程序员写代码的难度

1.2.3 即时编译

  • 对热门代码进行优化,提升执行效率

Java语言如果不做任何优化,其性能不如C/C++,因为Java语言需要将字节码指令通过JVM实时的解析为机器码才可以交给计算机运行,这个过程随着程序的执行,需要反复地执行,每次进行都需要花费一定的时间,而C/C++在编译过程中可以直接将源代码转换为计算机任何的机器码。

Java这样做的目的主要是为了支持跨平台特性,将一份字节码指令交给Linux、Windows平台,这些平台会安装不一样的JVM,分别将字节码解释成该平台上对应的机器码,实现了跨平台特性。

1.2.4 JVM 即时编译功能原理

有一个字节码文件,里面有一段字节码指令,虚拟机如果发现这段指令在很短时间内被多次调用,那么就会认为这段代码有必要去优化,会主动将代码解释并优化解析成机器码,然后将这个机器码保存在内存当中,这样当这段代码再次被执行时,就会直接从内存当中取出,直接调用。

  • JVM利用即时编译(Uust-In-Time简称IT)进行性能的优化,最终能达到接近C、C++语言的运行性能

1.3 常见的JVM

名称 作者 支持版本 社区活跃度(github star) 特性 适用场景
HotSpot(Open JDK版) Oracle 所有版本 高(闭源) 使用最广泛,稳定可靠,社区活跃,JIT支持,Oracle JDK默认虚拟机 默认
HotSpot(Open JDK版) Oracle 所有版本 中(16.1k) 同上,开源,Open JDK默认虚拟机 默认,对JDK有二次开发需求
GraalVM Oracle 11,17,19,企业版支持8 高(18.7k) 多语言支持,高性能、JT、AOT支持 微服务、云原生架构,需要多语言混合编程
Dragonwell JDK,龙井 Alibaba 标准版8,11,17,扩展版11,17 低(3.9k) 基于OpenJDK的增强,高性能、bug修复、安全性提升,JWarmup、ElasticHeap、Wisp特性支持 电商、物流、金融领域,对性能要求比较高
Eclipse OpenJ9,(原BM)9) IBM 8,11,17,19,20 低(3.1k) 高性能、可扩展,JIT、AOT特性支持 微服务、云原生架构
相关推荐
wxwx_bscxy32217 分钟前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步1 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
渡我白衣3 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
天下无敌笨笨熊3 小时前
C#Modbus串口开发心得
开发语言·c#
电商API_180079052473 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
zzzll11113 小时前
深度剖析:HashMap 并发死循环与 ConcurrentHashMap 两代演进全解
java·开发语言
如意猴3 小时前
【C++】001--C++入门(1)
开发语言·c++
秋名RG3 小时前
2026/5/27 生产事故复盘与整改方案
java
传奇开心果编程3 小时前
【Rust入门知识点学与练】第10课:Option 和 Result(错误处理入门)
开发语言·学习·rust
leonkay3 小时前
C# 锁机制——【2】深入原理
开发语言·后端·spring·c#·个人开发