1. Java文件转换
当我们保存java文件后,首先由编译器编译成class文件,然后通过Java虚拟机将class文件转换成字节码文件
2.Java虚拟机是怎么运行Java文件
首先将java文件加载到java虚拟机中,然后由虚拟机将类元信息存储在 虚拟机的方法区中。
执行时需要将字节码文件翻译为机器指令,有两种翻译方式:
- 即时编译
- 解释执行
解释执行 : 逐行将字节码指令转换为机器指令 。
即时编译 : 以方法为单位,将方法中的所有字节码编译成机器码。
即时编译编译时间久,但运行快。而解释执行编译时间短,但运行慢。
HotSpot 虚拟机采用的是混合模式,首先解释执行字节码,将其中反复执行的热点代码,以方法为代码,进行即时编译
3.热点数据的二八定律
即时编译同样也是建立在程序符合二八定律,百分之二十的代码占用了百分之八十的资源
对于不怎么占用资源的代码,可以采用解释执行的方式运行;而对于小部分的热点代码,采用即时编译将其转换成机器码执行,降低资源的占用。