一、功能
1、工作原理
Java编写的程序必须要先结果编译,但是这个步骤并不会生成特定平台的机器码。而是会生成一种平台无关性的.class文件。再由Java虚拟机来解释这个.class文件生成与平台相关的机器码,执行这个生成的机器码。达到跨平台的目的。
2、解释和运行
jvm本质上是运行在计算机上的程序,负责运行java字节码文件。
对字节码文件中的指令,实时的解释成机器码,计算机执行生成的机器码。
所以说,Java是编译与解释型语言,也可以说是不完全编译型语言。因为必须要先经过编译,JVM才能解释成字节码。
3、内存管理
自动为对象、方法等分配内存。自动垃圾回收机制,回收不再使用的对象。垃圾回收器会定期检查不再使用的对象,并回收它们占用的内存空间。JVM通过垃圾回收器来管理堆内存中的对象分配和释放。
4、 即时编译
在Java中每次执行都需要实时解释字节码文件成机器码,导致效率较低、速度变慢。这么做的原因是因为需要跨平台,不同操作系统的Java虚拟机不同,解释的也不一样,不同的虚拟机会转成当前操作系统的机器码。在不同的平台上JVM是不一样的,解释的机器码自然也是不一样的。
即时编译为了解决这个性能问题。JVM会识别热点代码(短时间多次调用), 会主动优化并且解释成机器码 ,将这个机器码保存在内存中。下次如果调用这段热点代码会直接从内存中取出调用。这样就省略了一次解释的步骤。这样在某些情况下性能就会提升很大 。
二、解释字节码
使用工具jclasslib工具查看class字节码
GitHub地址:https://github.com/ingokegel/jclasslib
1、分析class文件
public class