Exploiting prolific types for memory management and optimizations

In this paper, we introduce the notion of prolific and non-prolific types, based on the number of instantiated objects of those types. We demonstrate that distinguishing between these types enables a new class of techniques for memory management and data locality, and facilitates the deployment of known techniques. Specifically, we first present a new type-based approach to garbage collection that has similar attributes but lower cost than generational collection. Then we describe the short type pointer technique for reducing memory requirements of objects (data) used by the program. We also discuss techniques to facilitate the recycling of prolific objects and to simplify object co-allocation decisions.We evaluate the first two techniques on a standard set of Java benchmarks (SPECjvm98 and SPECjbb2000). An implementation of the type-based collector in the Jalapeño VM shows improved pause times, elimination of unnecessary write barriers, and reduction in garbage collection time (compared to the analogous generational collector) by up to 15%. A study to evaluate the benefits of the short-type pointer technique shows a potential reduction in the heap space requirements of programs by up to 16%.

[1]  Benjamin G. Zorn,et al.  Using lifetime predictors to improve memory allocation performance , 1993, PLDI '93.

[2]  Henry Lieberman,et al.  A real-time garbage collector based on the lifetimes of objects , 1983, CACM.

[3]  Michael H. Kalantar,et al.  Java server benchmarks , 2000, IBM Syst. J..

[4]  Amit Rao,et al.  Storage assignment optimizations to generate compact and efficient code on embedded DSPs , 1999, PLDI '99.

[5]  Benjamin G. Zorn,et al.  Comparative performance evaluation of garbage collection algorithms , 1989 .

[6]  Noel Thompson,et al.  On the Tendency of Varieties to Depart Indefinitely from the Original Type , 2004 .

[7]  James R. Larus,et al.  Cache-conscious structure layout , 1999, PLDI '99.

[8]  Manish Gupta,et al.  Distinguishing between prolific and non-prolific types for efficient memory management , 2001 .

[9]  Urs Hölzle,et al.  A Fast Write Barrier for Generational Garbage Collectors , 1993 .

[10]  Julian Dolby Automatic inline allocation of objects , 1997, PLDI '97.

[11]  Henry G. Baker,et al.  Infant mortality and generational garbage collection , 1993, SIGP.

[12]  Frank Jackson,et al.  Tenuring policies for generation-based storage reclamation , 1988, OOPSLA '88.

[13]  Jong-Deok Choi,et al.  A framework for interprocedural optimization in the presence of dynamic class loading , 2000, PLDI '00.

[14]  Darko Stefanovic,et al.  Properties of age-based automatic memory reclamation algorithms , 1999 .

[15]  Alex Garthwaite,et al.  Efficient object sampling via weak references , 2000, ISMM '00.

[16]  David Detlefs,et al.  Inlining of Virtual Methods , 1999, ECOOP.

[17]  Kathryn S. McKinley,et al.  Profile-Driven Pretenuring for Java , 2000 .

[18]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[19]  David Ungar Generation scavenging: a nondisruptive high performance storage reclamation algorithm , 1984 .

[20]  James R. Larus,et al.  Using generational garbage collection to implement cache-conscious data placement , 1998, ISMM '98.

[21]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[22]  David M. Ungar,et al.  Generation Scavenging: A non-disruptive high performance storage reclamation algorithm , 1984, SDE 1.

[23]  Scott Nettles,et al.  A study of large object spaces , 1998, ISMM '98.

[24]  Daniel G. Bobrow,et al.  An efficient, incremental, automatic garbage collector , 1976, CACM.

[25]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[26]  Michael E. Wazlowski,et al.  IBM Memory Expansion Technology (MXT) , 2001, IBM J. Res. Dev..

[27]  Amer Diwan,et al.  The Full Cost of a Generational Copying Garbage Collection Implementation , 1993 .

[28]  Matthew Arnold,et al.  Adaptive optimization in the Jalapeño JVM , 2000, OOPSLA '00.

[29]  Kathryn S. McKinley,et al.  Profile-driven pretenuring for Java (poster session) , 2000, OOPSLA '00.

[30]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[31]  Kathryn S. McKinley,et al.  On models for object lifetime distributions , 2000, ISMM '00.

[32]  Timothy L. Harris,et al.  Dynamic adaptive pre-tenuring , 2000, ISMM '00.

[33]  Matthew L. Seidl,et al.  Segregating heap objects by reference behavior and lifetime , 1998, ASPLOS VIII.

[34]  Andrew W. Appel,et al.  Creating and preserving locality of java applications at allocation and garbage collection times , 2002, OOPSLA '02.

[35]  Amer Diwan,et al.  A Language-Independent Garbage Collector Toolkit , 1991 .

[36]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[37]  Allen Wirfs-Brock,et al.  A Third Generation Smalltalk-80 Implementation , 1986, OOPSLA.

[38]  Mauricio J. Serrano,et al.  Characterizing the memory behavior of Java workloads: a structured view and opportunities for optimizations , 2001, SIGMETRICS '01.

[39]  Andrew A. Chien,et al.  An automatic object inlining optimization and its evaluation , 2000, PLDI '00.

[40]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[41]  Keith D. Cooper,et al.  Enhanced code compression for embedded RISC processors , 1999, PLDI '99.

[42]  Paul R. Wilson,et al.  Dynamic Storage Allocation: A Survey and Critical Review , 1995, IWMM.

[43]  Darko Stefanovic,et al.  A comparative performance evaluation of write barrier implementation , 1992, OOPSLA.

[44]  Jeff Bonwick,et al.  The Slab Allocator: An Object-Caching Kernel Memory Allocator , 1994, USENIX Summer.

[45]  Frank Jackson,et al.  An adaptive tenuring policy for generation scavengers , 1992, TOPL.

[46]  Darko Stefanovic,et al.  A comparative performance evaluation of write barrier implementation , 1992, OOPSLA '92.

[47]  Kathryn S. McKinley,et al.  Age-based garbage collection , 1999, OOPSLA '99.