|国家预印本平台
首页|在开放世界实现逃逸分析算法

在开放世界实现逃逸分析算法

Practical Escape Analysis in an Open World

中文摘要英文摘要

逃逸分析(escape analysis)是一种可以有效减少Java程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法.此前绝大多数逃逸分析的实现都基于一个所谓"封闭世界(closed world)"的前提:所有可能被执行的方法在做逃逸分析前都已经得知,并且程序的实际运行不会改变它们之间的调用关系.但真实的Java程序运行时,这样的假设并不成立.Java程序拥有的许多特性,例如动态类加载、调用本地函数以及反射程序调用等等,都将打破所谓"封闭世界"的约定.这样的真实运行环境被称为"开放世界".在开放世界中,实现逃逸分析将面临许多重要的问题,例如能否正确全面地捕捉动态载入的类和方法并分析它们与原有程序的关系;逃逸分析算法的复杂性是否能够得以控制,以保证即时编译器的重新分析时间不会过长,等等.提出一个新的逃逸分析架构,它可以有效地处理上述开放世界所面临的问题.该分析架构将增量分析Java程序,动态捕获新载入和调用的类及方法,同时在复杂性和精度之间进行权衡,正确有效地降低程序的运行负载.该分析架构已经在Intel的开放式Java虚拟机系统ORP中实现,经过实际测试,可以有效地消除一些主要基准测试程序如SPECjbb2000和SPECjvm98的db中70%~94%的同步操作,同时大幅提高程序的运行速度15%~31%.

novel escape analysis framework that handles the Java open-world features is proposed and evaluated. The novel approach analyzes a Java program with an optimistic view that the program is in a closed world and applies optimizations aggressively. The framework also provides a mechanism that controls the analysis complexity. The results show that the escape analysis framework, which has been implemented in Intel's Open Runtime Platform on X86, eliminated about 70% and 94% synchronization operations, and improved the runtime performance 15.77% and 31.28%, for SPECjbb2000 and 209_db respectively.

金茂忠、史晓华、吴甘沙、路奎元

计算技术、计算机技术

逃逸分析即时编译器Java虚拟机

Escape AnalysisJIT compilerJava virtual machine

金茂忠,史晓华,吴甘沙,路奎元.在开放世界实现逃逸分析算法[EB/OL].(2011-01-25)[2025-08-02].http://www.paper.edu.cn/releasepaper/content/201101-1221.点此复制

评论