论文部分内容阅读
自1995年问世以来,Java语言因为其安全、跨平台、面向对象等优秀特性而受到人们的欢迎,在各个行业当中都得到了广泛的应用。作为Java程序所运行的基础平台,Java虚拟机的性能直接决定了Java应用程序的表现。随着Java应用程序功能与复杂度的提升,对于虚拟机性能的要求越来越高。研究Java虚拟机的性能优化技术,无论是在理论上还是实际应用中,都具有重大意义。 本文所完成的工作与贡献有以下三个方面。 第一、分层编译在MIPS上的实现。Java虚拟机主要是针对X86、ARM等主流处理器架构设计的。而在MIPS等架构上,缺少相应实现或是优化力度不足。本文针对Java虚拟机的平台兼容性问题,实现了MIPS平台上的分层编译功能。相比于分层编译开启之前,虚拟机在客户端型应用中性能提升了33%。 第二、解释器的性能优化。针对Java虚拟机解释器性能低下导致应用启动缓慢的问题,本文先量化分析了解释器分派指令的运行时开销,说明了解释器指令分派这一环节是解释器的性能瓶颈之一。在此基础上,提出了超级字节码技术,有效减少了解释器指令分派的执行次数,达到了对解释器性能优化的目的。优化后的虚拟机在解释执行时有了4.7%的平均性能提升。 第三、虚拟机参数调优。Java虚拟机可配置的启动参数非常多,对于不同的应用场景,需要采用不同的参数配置以充分发挥虚拟机的性能,而手工寻找较优的启动参数又存在困难。本文采用OpenTuner这个自动调优框架,针对Java虚拟机部分启动参数进行调优,有效提升了MIPS平台虚拟机在实际应用当中的性能,lusearch应用性能提升更是达到了86%。 以上三个优化方案都是在龙芯平台上基于JDK8u77-b03虚拟机版本进行的实验验证,这些优化代码部分将提交到龙芯OpenJDK8版本库当中,在实际生产当中使用。