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

相关推荐
PyAIGCMaster几秒前
第二周补充:Go语言中&取地址符与fmt函数详解
开发语言·后端·golang
Dongwoo Jeong3 分钟前
缓存基础解释与缓存友好型编程基础
后端·c·cache·cache friendly
Gy-1-__9 分钟前
【springcloud】快速搭建一套分布式服务springcloudalibaba(一)
后端·spring·spring cloud
硬件人某某某16 分钟前
基于Django的手办交易平台~源码
后端·python·django
闲猫6 小时前
go orm GORM
开发语言·后端·golang
丁卯4046 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
bing_15810 小时前
简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
spring boot·后端·简单工厂模式
天上掉下来个程小白10 小时前
案例-14.文件上传-简介
数据库·spring boot·后端·mybatis·状态模式
Asthenia041211 小时前
基于Jackson注解的JSON工具封装与Redis集成实战
后端
编程星空11 小时前
css主题色修改后会多出一个css吗?css怎么定义变量?
开发语言·后端·rust