JVM基础:初识JVM

IDE:IntelliJ IDEA 2022.1.3 x64
操作系统:win10 x64 位 家庭版



在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、JVM是什么?

JVM的英文全称是 Java Virtual Machine,其中文译名为Java虚拟机。它在本质上就是是一个运行在计算机上的程序,他的职责是运行Java字节码文件

JVM执行流程如下

在这里插入图片描述


二、JVM有哪些功能?

2.1 解释和运行

  • 对字节码文件中的指令,实时解释成机器码,让计算机执行

2.2 内存管理

  • 自动为对象、方法等分配内存
  • 自动的垃圾回收机制,回收不再使用的对象 (相对C/C++而言,C/C++无法自动回收垃圾)

2.3 即时编译

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

🤔什么是热点代码?

即在应用中短时间内被多次调用的代码

即时编译功能非常重要,Java语言如果不对此做优化,其性能远不如C/C++

🤔why?

👉请看如下编译对比所示

在这里插入图片描述

正是由于Java源代码需要先被编译生成字节码文件,而后Jvm需要实时解释字节码文件为计算机所能理解的机器码,而与此对比的C/C++ 源代码直接就可以通过编译和链接生成可执文件【机器码】,故而Java的执行性能要远低于C/C++

🤔那为何Jvm需要实时解释字节码文件?

为支持Java的跨平台性

🤔JVM如何执行即时编译功能?换而言之,它是如何做到的?

JVM在解释运行一个Java字节码文件时,会将其“翻译”成汇编语言或机器代码,特别地。它会针对其中的热点代码【字节码指令】保存到内存中,等到下次要执行该热点代码时,直接在内存中调用即可。

执行流程如下所示

在这里插入图片描述

正是有了即时编译【Just-In-Time 简称JIT】功能的优化性能,使得能Java可以达到接近C、C++语言的运行性能甚至在特定场景下实现超越,例如,在网络编程、多线程编程、图形界面开发等方面,Java的性能表现非常优秀。


三、有哪些常见的JVM?

3.1 常见JVM

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

在这里插入图片描述

3.2 Java虚拟机规范

👉释义

所谓Java虚拟机的规范,就是第三方厂家可以按照Oracle提供的JVM开发规范,针对自己的产品特点,对JVM进行二次开发

👉注意

  • 《Java虚拟机规范》由Oracle制定,内容主要包含了Java虚拟机在设计和实现时需要遵守的规范,主要包含class字节码文件的定义、类和接口的加载和初始化、指令集等内容。
  • 《Java虚拟机规范》是对虚拟机设计的要求,而不是对Java设计的要求,也就是说虚拟机可以运行在其他的语言比如Groovy、Scala生成的class字节码文件之上。
  • 官网地址:https://docs.oracle.com/javase/specs/index.html

在这里插入图片描述

3.3 HotSpot的发展历程

在这里插入图片描述

参考资料

https://www.bilibili.com/video/BV1r94y1b7eS?p=7&spm_id_from=pageDriver&vd_source=5a34715e416a427a73a3ca52397848b5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌上少年,且听这风吟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值