做设计那些网站可以卖设计图,网站开发全科班,南昌市公司网站建设,做网站杭州傲视信息#x1f44f;作者简介#xff1a;大家好#xff0c;我是爱吃芝士的土豆倪#xff0c;24届校招生Java选手#xff0c;很高兴认识大家#x1f4d5;系列专栏#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理#x1f525;如果感觉博主的文… 作者简介大家好我是爱吃芝士的土豆倪24届校招生Java选手很高兴认识大家系列专栏Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理如果感觉博主的文章还不错的话请三连支持一下博主哦博主正在努力完成2023计划中源码溯源一探究竟联系方式nhs19990716加我进群大家一起学习一起进步一起对抗互联网寒冬 文章目录 初识JVM什么是JVMJVM的功能 - 即时编译即时编译常见的JVMHotSpot的发展历程 初识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的发展历程