HotSpot模板解释器目标代码生成过程源码分析 - ImportNew
虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如 果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升。JVM的Hotspot虚拟机的模板解释器就是 用这种方法来解释执行的。在开始分析之前,先了解一下JVM的执行方式。
(1).边解释边运行,即每次解释一条字节码并运行其解释的本地代码,这种执行引擎速度相对很慢
(2).JIT(即时编译)具有更快的运行速度但是需要更多的内存,方法被第一次调用时,字节码编译生成的本地代码将会被缓存,这样在该方法下次被调用的时候,将取出缓冲的本地代码直接运行
(3).自适应优化,对于经常被调用的方法,则会缓存其编译产生成的本地代码,对于其他较少被调用的代码,仍对其采用解释执行的方法。
(4).片上虚拟机,即虚拟机的执行引擎直接嵌入在片上
HotSpot虚拟机可以配置为以下运行模式:
-Xint:解释模式
-Xcomp:编译模式
-Xmixed:混合模式
(通过java -version就可以查看虚拟机的运行模式)
HotSpot在启动时,会为所有字节码创建在目标平台上运行的解释运行的机器码,并存放在CodeCache中,在解释执行字节码的过程中,就会从CodeCache中取出这些本地机器码并执行。
Hotspot虚拟机的细节技术实现值得借鉴,如果你觉得源码甚至汇编代码比较枯燥的话,也可以大致了解相关模块的组件、工作流程,对相关实现有一定的认识。
Read full article from HotSpot模板解释器目标代码生成过程源码分析 - ImportNew
No comments:
Post a Comment