【24h】

Escape analysis for Java

机译:java的逃生分析

获取原文

摘要

This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory.
机译:本文提出了一种简单而有效的数据中的Java程序流为对象的逃逸分析算法来确定(i)如一个对象可以在栈上分配; (ⅱ)如果对象在其寿命期间仅访问由单个线程,从而使对象上的同步操作可以被去除。我们介绍逃逸分析,连接图,用来建立对象和对象引用之间的可达性关系的一个新的程序抽象。我们表明,连接图可以概括为这样,同样的摘要信息可能会在不同的呼叫环境中有效地使用各种方法。我们提出了使用上述的属性来有效地计算该连接图形和识别的方法和线程非逸出对象过程间算法。实验结果,从一个原型实现我们在IBM的高性能Java编译器架构,非常看好。可以在栈上分配的对象的百分比超过三个出十个基准的所有动态创建的对象(具有19%的中值),11%至92%的所有锁操作的70%的那些10程序被消除(具有51%的中值)333兆赫的PowerPC工作站128 MB存储器上,和总执行时间的减少的范围从2%至23%(以7%的中值)。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号