Segregating heap objects by reference behavior and lifetime

Matthew L. Seidl, Benjamin G. Zorn
1998 SIGPLAN notices  
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
more » ... ent 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. Introduction Due to the widespread success of C++ and more recently Java, object-oriented applications now dominate the commercial marketplace. As a result, the use of dynamic storage allocation in application programs has increased dramatically. A recent study of C and C++ programs shows that over a range of application domains, heap objects are allocated almost ten times more frequently in C++ than in C [3] . Because all objects in Java must be allocated on the heap, dynamic storage allocation in Java is likely to be even more frequent than in C++ [8] . As program sizes have increased, so have main memory sizes. But, because of rapid changes in computer technology, a larger amount of outdated hardware is currently in
doi:10.1145/291006.291012 fatcat:k6xxov4p7vdq5koqvlfdwbu3me