Uniqueness Inference for Compile-Time Object Deallocation
Sigmund Cherem and Radu Rugina
The 2007 International
Symposium on Memory Management (ISMM 2007) Montreal, Canada, 21-22
October, 2007
Abstract
This paper presents an analysis and transformation for
individual object reclamation for Java programs. First, we propose a uniqueness
inference algorithm that identifies variables and object fields that hold unique
references. The algorithm performs an intra-procedural analysis of each method,
and then builds and solves a set of inter-procedural uniqueness dependencies to
find the global solution. Second, our system uses the uniqueness information to
automatically instrument program with explicit deallocation of individual
objects. A key feature of the transformation is its ability to deallocate entire
heap structures, including recursive structures, when their root objects are
freed. This is achieved by generating object destructors that recursively free
all of the unique object fields. Our experiments show that the analysis is
effective at reclaiming a large fraction of the objects at a low analysis cost.