1. Java代码为何要在虚拟机中运行?
Java作为一种高级语言,语法复杂,抽象度高,如果直接通过硬件来执行很不现实,所以就引入了Java虚拟机;
2. 解释"一次编写,到处运行"
一旦Java代码被编译成Java字节码,便可以在不同平台上的Java虚拟机实现上运行。
3. 解释Java虚拟机是怎样运行Java字节码的?
以标准JDK中的HotSpot虚拟机为例
首先将class文件加载到虚拟机中(方法区)
然后将Java字节码(class文件)翻译成机器码给底层硬件执行
4. 具体解释一下翻译成机器码给底层硬件执行的过程
具体翻译过程有两种形式:
解释执行,即逐条将字节码翻译成机器码并执行
即时编译(Just-In-Time Compilation JIT),即一个方法中包含的所有字节码编译成机器码后再执行
前者的优势在于无需等待编译,后者的优势在于实际运行速度更快。HotSpot默认采用混合模式,它会先解释执行字节码,然后将其中反复执行的热点代码,以方法为单位进行即时编译
5. 简述你对Java虚拟机作用的理解(任意两点即可)
Java虚拟机将运行时内存区域划分为5个部分
虚拟机提供了一个代码托管的环境,并且帮助我们处理代码中冗长而且容易出错的事务,如自动内存管理与垃圾回收