Segregating heap objects by reference behavior and lifetime

Dynamic storage allocation has become increasingly important in many applications, in part due to the use of the object-oriented paradigm. At the same time, processor speeds are increasing faster than memory speeds and programs are increasing in size faster than memories. In this paper, we investigate efforts to predict heap object reference and lifetime behavior at the time objects are allocated. Our approach uses profile-based optimization, and considers a variety of different information sources present at the time of object allocation to predict the object's reference frequency and lifetime. Our results, based on measurements of six allocation intensive programs, show that program references to heap objects are highly predictable and that our prediction methods can successfully predict the behavior of these heap objects. We show that our methods can decrease the page fault rate of the programs measured, sometimes dramatically, in cases where the physical memory available to the program is constrained.

[1]  Benjamin G. Zorn,et al.  Memory allocation costs in large C and C++ programs , 1994, Softw. Pract. Exp..

[2]  Dirk Grunwald,et al.  Improving the cache locality of memory allocation , 1993, PLDI '93.

[3]  C. J. Stephenson,et al.  New methods for dynamic storage allocation (Fast Fits) , 1983, SOSP '83.

[4]  David A. Cohn,et al.  Predicting Lifetimes in Dynamically Allocated Memory , 1996, NIPS.

[5]  C. J. Stephenson Fast fits--new methods for dynamic storage allocation , 1983 .

[6]  Ben Zorn,et al.  Predicting References to Dynamically Allocated Objects , 1997 .

[7]  Benjamin G. Zorn,et al.  Comparative Performance Evaluation of , 1989 .

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

[9]  Charles J. Colbourn,et al.  Some Empirical Observations on Program Behavior with Applications to Program Restructuring , 1985, IEEE Transactions on Software Engineering.

[10]  Dirk Grunwald,et al.  Quantifying Behavioral Differences Between C and C++ Programs , 1994 .

[11]  David Grove,et al.  Profile-guided receiver class prediction , 1995, OOPSLA.

[12]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

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

[14]  Benjamin G. Zorn The Effect of Garbage Collection on Cache Performance , 1991 .

[15]  David A. Moon,et al.  Garbage collection in a large LISP system , 1984, LFP '84.

[16]  Paul R. Wilson,et al.  Caching considerations for generational garbage collection , 1992, LFP '92.

[17]  Michael A. Harrison,et al.  Accurate static estimators for program optimization , 1994, PLDI '94.

[18]  Scott McFarling,et al.  Program optimization for instruction caches , 1989, ASPLOS III.

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

[20]  Amer Diwan,et al.  Memory subsystem performance of programs using copying garbage collection , 1994, POPL '94.

[21]  Kiem-Phong Vo,et al.  Vmalloc: A General and Efficient Memory Allocator , 1996, Softw. Pract. Exp..

[22]  Robert Courts,et al.  Improving locality of reference in a garbage-collecting memory management system , 1988, CACM.

[23]  James R. Larus,et al.  Efficient path profiling , 1996, Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29.

[24]  Alan Jay Smith,et al.  Aspects of cache memory and instruction buffer performance , 1987 .