JVM系列-1.初识JVM

  • 👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家
  • 📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理
  • 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
  • 🍂博主正在努力完成2023计划中:源码溯源,一探究竟
  • 📝联系方式:nhs19990716,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬👀

初识JVM

什么是JVM

JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。

JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。

Java虚拟机主要是将字节码转换成机器码

最后将机器码交给计算机去运行

从上面就可以看到JVM的一个功能,解释和运行

从功能上来看,JVM主要有:

JVM的功能 - 即时编译

Java语言如果不做任何优化,性能不如C、C++等语言。

java需要将字节码指令实时的通过java虚拟机解释成机器码,才可以交给计算机去运行。这个过程随着程序的执行需要反复的进行。所以每一次运行都需要花费一定的时间。但是c和c++在编译过程中直接可以将你的源代码文件转换成计算机认可的机器码,只需要将机器码运行就可以得到最终结果。节省了一个解释的过程。

而java之所以要这样做主要是为了支持跨平台特性。将一份字节码指令交给linux或者windows不同的平台,这些平台上会安装不一样的java虚拟机,它们分别将其解释成当前平台的机器码,然后就可以交给不同的操作系统去运行了。

正如c和c++追求性能不具备跨平台特性,而java跨平台性能相对差一些。

由于JVM需要实时解释虚拟机指令,不做任何优化性能不如直接运行机器码的C、C++等语言。

即时编译

虚拟机如果发现这段指令是热点代码,也就是在很短的时间内被多次调用,那么就会认为这段代码有必要去优化,将这段代码保存在内存中,当第二次执行的时候,从内存中直接调用即可。这样就省略了一次解释的步骤,提升了性能。

JVM提供了即时编译(Just-In-Time 简称JIT) 进行性能的优化,最终能达到接近C、C++语言的运行性能甚至在特定场景下实现超越。

常见的JVM

《Java虚拟机规范》由Oracle制定,内容主要包含了Java虚拟机在设计和实现时需要遵守的规范,主要包含class字节码文件的定义、类和接口的加载和初始化、指令集等内容。

《Java虚拟机规范》是对虚拟机设计的要求,而不是对Java设计的要求,也就是说虚拟机可以运行在其他的语言比如Groovy、Scala生成的class字节码文件之上。

HotSpot的发展历程

相关推荐
学长毕设6 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
滴滴答答哒7 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
captain3769 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
IT_陈寒11 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
泡海椒11 小时前
05-雷达图多维画像-信用评级多维画像
后端
王中阳Go11 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
大哥430911 小时前
Modbus 的"字序":一个配错就变成天文数字,或者干脆变成 0
后端
岩钧11 小时前
New API 源码解析:一个生产级 AI 网关的架构与实现
后端
学到老活到老11 小时前
第 24 集:配置文件写了 80,Spring Boot 为什么读到 90?
java·后端·spring
用户3600555790011 小时前
Kestrel_VLLM - 25 · 全注意力层设备化、整层对拍与访存粒度
后端