Improving the memory performance of java workloads

2003 
The rapidly widening performance gap between processor and memory speeds (i.e., the “memory wall” problem) and the growing importance of the Java platform make it crucial to improve the memory behavior of Java workloads. Various features of Java—object orientation, dynamic linking, garbage collection, multithreading, and the absence of exposed pointers and pointer arithmetic—create opportunities for improving memory system performance using runtime techniques within the Java Virtual Machine (JVM). The interaction of these features makes the realization of these opportunities nontrivial and challenging. The research presented in this dissertation targets the “memory wall” problem in the context of Java. We have developed a better understanding of the memory behavior of Java workloads and how it compares with the memory behavior of traditional scientific and technical workloads. In particular, we answer the following questions: (i) How can the data locality of Java applications be improved? (ii) How can the overhead of garbage collection be reduced? (iii) What new and traditional optimizations can be applied to Java programs? (iv) What makes it difficult to apply some traditional optimizations to Java? The thesis discusses the progress we have made towards answering these questions and makes several contributions. First, it presents results from our comprehensive study of the memory performance of Java workloads. This study gives us important insights into the inherent high-level and low-level memory behavior of Java programs, identifies the sources of performance problems, and serves as the foundation for the rest of the thesis. Next, it introduces the notion of prolific types and proposes a type-based framework that enables new techniques for memory management (e.g., a type-based garbage collection), enables new optimization techniques (e.g., write barrier elimination), and facilitates the application of known optimization techniques (e.g., object co-allocation). Then it discusses a novel locality-conscious algorithm for traversing reachable objects at garbage collection time (termed a locality-based traversal), which reduces garbage collection pauses and enhances the locality of surviving objects. It also presents results on the impact of multiple page size support on Java application performance. Many research results from this thesis have been presented at several conferences [83, 84, 85, 107] and published as a book chapter [86].
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    0
    References
    0
    Citations
    NaN
    KQI
    []