论文部分内容阅读
Java应用具有良好的跨平台特性,广泛应用于服务器领域。Java虚拟机作为Java程序赖以运行的基础平台,对Java应用执行效率的影响至关重要。随着虚拟机由32位向64位过渡,服务器软件功能与复杂度不断增加,对Java应用执行性能需求日益提升,在精简指令体系结构平台,如MIPS下虚拟机性能遇到新的瓶颈。对MIPS64平台下的Java虚拟机性能优化方法的研究具有重要意义。 本文完成的主要工作和贡献如下: 第一,针对MIPS64系统下虚拟机因指针膨胀而产生的性能瓶颈进行分析,提出并实现一种通过在虚拟机内存中增设全局立即数区缓存Java方法入口地址的方案,将多条对方法入口地址的加载指令转化为一条访存指令,从而提升方法调用的执行效率,优化系统性能。 第二,以SpecJVM2008为实际用例,对虚拟机运行时类库方法的执行时间和使用频度进行度量和统计,发现在一些典型场景下,对类库方法的调用具有时间局部性,存在少数使用频度较高的热点方法,占据绝大部分的执行时间分成,这部分高频度热点方法的实现具有潜在的优化空间。 第三,基于运行时类库使用频度的度量统计,提出了使用JNI调用机制和使用Intrinics机制优化热点方法的方案,通过将高频度热点方法进行本地化并内置于虚拟机中,提高了热点方法的执行效率。以SpecJVM2008为目标用例,分别对两种优化方案进行应用,进一步提升系统性能。 在龙芯软硬件平台上对本文提出的优化方案进行了效果验证和测试。其中方法调用机制优化后平均性能提升5%,对运行时类库热点类投入优化后平均性能提升4.07%,最高提升11.93%,本文优化成果已集成于龙芯JDK实际应用产品中。