Creating and Preserving Locality of Java Applications at Allocation and Garbage Collection Times

Copyright © (2002) by Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distrubuted for profit or commericial advantage. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee.

The growing gap between processor and memory speeds is motivating the
need for optimization strategies that improve data locality. A major
challenge is to devise techniques suitable for pointer-intensive
applications. This paper presents two techniques aimed at improving
the memory behavior of pointer-intensive applications with dynamic
memory allocation, such as those written in Java. First, we present an
allocation time object placement technique based on the recently
introduced notion of prolific (frequently instantiated) types. We
attempt to co-locate, at allocation time, objects of prolific types
that are connected via object references. Then, we present a novel
locality based graph traversal technique. The benefits of this
technique, when applied to garbage collection (GC), are twofold: (i)
it improves the performance of GC due to better locality during a heap
traversal and (ii) it restructures surviving objects in a way that
enhances locality. On multiprocessors, this technique can further

reduce overhead due to synchronization and false sharing. The
experimental results, on a well-known suite of Java benchmarks
(SPECjvm98, SPECjbb2000, and jOlden), from an implementation of these
techniques in the Jikes RVM, are very encouraging. The object
co-allocation technique improves application performance by up to 21%
(10% on average) in the Jikes RVM configured with a non-copying
mark-and-sweep collector. The locality-based traversal technique
reduces GC times by up to 20% (10% on average) and improves the
performance of applications by up to 14% (6% on average) in the Jikes
RVM configured with a copying semi-space collector. Both techniques
combined can improve application performance by up to 22% (10% on
average) in the Jikes RVM configured with a non-copying mark-and-sweep
collector.

By: Yefim Shuf, Manish Gupta, Hubertus Franke, Jaswinder Pal Singh

Published in: ACM SIGPLAN Notices, volume 37, (no 11), pages 13-25 in 2002

LIMITED DISTRIBUTION NOTICE:

This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.

RC22417.pdf

Questions about this service can be mailed to reports@us.ibm.com .