OOPSLA '04

Program
Technical Program
  Invited Speakers
  Technical Papers
  Onward!
  Panels
  Practitioner Reports
  Tutorials
Workshops
DesignFest
Educators' Symposium
Demonstrations
Posters
Doctoral Symposium
Exhibits
Student Research Comp.
FlashBoF
 
Turing Lecture
 
Social Events
 
Week at a Glance
 
Final Program (1.5M .pdf)

Find in Program
 

Page
Printer-friendly

Basket
view, help

"The Garbage Collection Advantage: Improving Program Locality"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps
 
  > Technical Program > Technical Papers > Garbage Collection

 : Tuesday

The Garbage Collection Advantage: Improving Program Locality

Meeting Rooms 1-3
Tuesday, 11:00, 30 minutes
 


 
7·8·9·10·11·12·13·14·15·16·17·18·19·20·21

Xianglong Huang, University of Texas at Austin
Stephen Blackburn, Australian National University
Kathryn McKinley, University of Texas At Austin
J. Eliot B. Moss, The University of Massachusetts, Amherst
Zhenlin Wang, Michigan Technological University
Perry Cheng, IBM T.J. Watson Research Center

As increases in processor speed continue to outpace increases in cache and memory speed, programs are losing more performance to poor locality. Because copying garbage collectors move objects, they have the opportunity to improve locality for languages such as Java. This paper introduces a new dynamic, online class analysis for finding and exploiting locality in a copying collector. The analysis exploits method sampling in a JIT (just-in-time) optimizing compiler. For each hot (frequently accessed) method, object reordering analysis marks the class fields that the method accesses as hot. Then at garbage collection time, the collector copies referents of hot fields together with their parent. Enhancements to this basic technique include heuristics that decay heat to respond to phase changes, group objects of hot classes together in a separate copy space, and static analysis to exclude cold basic blocks from the reordering analysis. In experiments with JikesRVM using MMTk on a range of Java programs, the overhead of dynamic class reordering is on average negligible and at most 1.9%. We compare class reordering with a number of static class oblivious orderings (e.g., breadth and depth first). The overall time variation between static orderings can be up to 25% and there is no consistent winner. In contrast, dynamic class reordering always matches or improves over the best static ordering since its history-based copying order tunes memory layout to program traversal.