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的发展历程

相关推荐
颜酱1 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
小码哥_常2 小时前
Java后端定时任务抉择:@Scheduled、Quartz、XXL - Job终极对决
后端
uzong2 小时前
Skill 被广泛应用,到底什么是 Skill,今天详细介绍一下
人工智能·后端·面试
小码哥_常2 小时前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
IT_陈寒4 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
uzong5 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
唐叔在学习5 小时前
Python桌面端应用最小化托盘开发实践
后端·python·程序员
yuhaiqiang5 小时前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
二闹6 小时前
Python文件读取三巨头你该选择哪一个?
后端·python
苏三说技术6 小时前
推荐几个牛逼的AI Agent项目
后端