Heap space analysis for java bytecode

Heap space analysis for java bytecode
复制标题

java字节码的堆空间分析

DOI:
10.1145/1296907.1296922
复制
发表时间:
2007
期刊:
Journal of Automated Reasoning
影响因子:
--
通讯作者:
M. Gómez
M. Gómez
中科院分区:
--
文献类型:
--
作者:
E. Albert;S. Genaim;M. Gómez

文献摘要

被引文献

相似文献

本文介绍了(顺序)Java字节码的堆空间分析。该分析生成了堆的空间成本关系,该关系在编译时定义了程序的堆消耗是其数据大小的函数。这些关系可用于在执行不同方法期间的堆空间上获得上限。此外,我们描述了如何通过依靠逃生分析来完善成本关系,以便考虑到垃圾收集器从相应方法退出后可以安全地处理的堆空间。然后,这些精制的成本关系用于在方法返回后推断在活动堆空间上的上限。分析的示例应用程序考虑恒定堆的使用以及与数据大小成正比的堆积使用(包括多项式和指数堆消耗)。我们的原型实现是通过一系列示例报告和证明的,这些示例说明了分析如何自然地包含标准数据结构,例如列表,树和数组,并用以对象为导向的编程样式编写了几个维度。
This article presents a heap space analysis for (sequential) Java bytecode. The analysis generates heap space cost relations which define at compile-time the heap consumption of a program as a function of its data size. These relations can be used to obtain upper bounds on the heap space located during the execution of the different methods. In addition, we describe how to refine the cost relations, by relying on escape analysis, in order to take into account the heap space that can be safely deallocated by the garbage collector upon exit from a corresponding method. These refined cost relations are then used to infer upper bounds on the active heap space upon methods return. Example applications for the analysis consider inference of constant heap usage and heap usage proportional to the data size (including polynomial and exponential heap consumption). Our prototype implementation is reported and demonstrated by means of a series of examples which illustrate how the analysis naturally encompasses standard data-structures like lists, trees and arrays with several dimensions written in object-oriented programming style.