论文部分内容阅读
Java语言使用垃圾收集器自动回收无用对象的内存单元,造成Java语言相较于C++等其它面向对象语言运行效率低。因此,有必要通过优化对象内存空间管理模式,提高Java虚拟机的运行性能。
对象生命期分析为Java语言对象内存空间管理模式的优化提供了基本的依据,其通过对程序进行分析获得程序中对象的生命期信息。逃逸分析是获得对象生命期信息的一种重要的分析手段,但其获得的信息不够精确,不能很好地辅助对象内存空间管理优化工作的进行。
为了解决上述问题,本文提出了一种基于逃逸分析的对象生命期分析方法,并以其为基础实现了一种对象内存空间管理模式的优化应用:JIT(Just-in-time Compiler)辅助GC(Garbage Collector)优化应用。围绕着对象生命期分析和JIT辅助GC优化应用,本文重点探讨并完成了以下工作:
1.提出一种基于逃逸分析的对象生命期分析算法,以获得更为精确的对象生命期信息。
本文提出了一种基于逃逸分析的、增量式、过程间的对象生命剜分析,结合过程内与过程间的分析算法,分析非全局对象的生命期信息。
2.扩展即时编译器高级中间表示指令集及相关解析操作以支持代码变换。
为实现代码优化变换,在即时编译器高级中间表示指令集上增加支持对象显式回收的指令。在低级中间表示层甚至更底层实现对这些扩展指令的解析。
3.利用对象生命期分析结果设计并实现代码变换策略。
基于对象生命期分析提供的分析结果,实现在高级中间表示层进行的代码变换,旨在适当的程序点处插入死亡对象的回收操作并保证运行时执行。
4.结合即时编译器流水线体系结构,以优化遍的形式实现分析和变换。
我们在Apache Harmony的即时编译器中以优化遍的形式实现了对象生命期分析和JIT辅助GC的优化应用。实验结果表明,分析较为精确地计算出局部对象的生命期信息,JIT辅助GC比普通的GC更具高效性。