%0 Journal Article %T 在开放世界中实现逃逸分析 %A 史晓华? %A 吴甘沙? %A 金茂忠? %A LUEH %A Guei-Yuan? %A 刘超? %A 王雷? %J 软件学报 %P 522-532 %D 2008 %X 逃逸分析(escapeanalysis)是一种可以有效减少java程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法.此前绝大多数逃逸分析的实现都基于一个所谓"封闭世界(closedworld)"的前提:所有可能被执行的方法在做逃逸分析前都已经得知,并且,程序的实际运行不会改变它们之间的调用关系.但当真实的java程序运行时,这样的假设并不成立.java程序拥有的许多特性,例如动态类加载、调用本地函数以及反射程序调用等等,都将打破所谓"封闭世界"的约定.这样的真实运行环境被称为"开放世界".在开放世界中,实现逃逸分析将面临许多重要的问题,例如,能否正确、全面地捕捉动态载入的类和方法,并分析它们与原有程序的关系;逃逸分析算法的复杂性是否能够得以控制,以保证即时编译器的重新分析时间不会过长,等等.提出一个新的逃逸分析架构,它可以有效地处理上述开放世界所面临的问题.该分析架构将增量分析java程序,动态捕获新载入和调用的类及方法,同时,在复杂性和精度之间进行权衡,正确、有效地降低程序的运行负载.该分析架构已经在intel的开放式java虚拟机系统orp中实现,经过实际测试,可以有效地消除一些主要基准测试程序,如specjbb2000和specjvm98的db中70%~94%的同步操作,大幅度地提高15%~31%的程序的运行速度. %K 逃逸分析 %K 即时编译器 %K java虚拟机 %U http://www.jos.org.cn/ch/reader/view_abstract.aspx?file_no=20080305&flag=1