OOPredictor: Predicting Object-Oriented Accesses using Static Analysis

📅 2025-12-03
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
Irregular memory accesses induced by pointer chasing in object-oriented programs degrade cache performance, and existing hardware prefetchers struggle to mitigate this issue effectively. This paper proposes a compile-time static analysis technique that, for the first time, constructs a Markov chain model from static program analysis to accurately predict runtime object access patterns in Java programs—without requiring runtime profiling or historical trace data, thereby enabling low-overhead, high-accuracy modeling. We implement a prototype within the OpenJ9 JVM and OMR compiler framework. Experimental evaluation demonstrates that the model faithfully captures real-world access behavior and effectively supports low-intrusion optimizations: specifically, reordering object copying during garbage collection to improve memory locality, which significantly alleviates load latency. Our approach bridges the gap between static analysis and dynamic memory behavior prediction, offering a principled foundation for compiler-driven memory optimization in managed runtime environments.

Technology Category

Application Category

📝 Abstract
Object-oriented Programming has become one of the most dominant design paradigms as the separation of concerns and adaptability of design reduce development and maintenance costs. However, the convenience is not without cost. The added indirection inherent in such designs causes excessive pointer chasing, negatively affecting locality, which in turn degrades the performance of cache structures. Furthermore, modern hardware prefetchers are mostly stride prefetchers that are ill-equipped to handle the unpredictability of access patterns generated by pointer chasing. Most software approaches that seek to address this problem resort to profiling the program as it runs, which comes with a significant run-time overhead or requires data from previous runs. In this paper, we propose the use of compile-time static analysis to predict the most common access patterns displayed by a program during run time. Since Java is one of the most popular object-oriented languages, we implement our prototype within the OpenJ9 JVM, inside the OMR optimizer infrastructure. The outputs of our proposed predictor are Markov chains that model the expected behavior of the program. The effectiveness of the proposed predictor is evaluated by comparing the model with the actual run-time behavior of the program measured using an instrumented interpreter. Our experiments show that the proposed predictor exhibits good accuracy and can be used to inform minimally intrusive load stall mitigation strategies, e.g. informing copying GCs on more locality-friendly copying orders
Problem

Research questions and friction points this paper is trying to address.

Predicting object-oriented access patterns using static analysis
Addressing cache performance degradation from pointer chasing
Informing hardware prefetchers with compile-time generated Markov chains
Innovation

Methods, ideas, or system contributions that make the work stand out.

Static analysis predicts object-oriented access patterns
Markov chains model program behavior at compile-time
Integration within JVM optimizer enables low-overhead prefetching
🔎 Similar Papers
No similar papers found.
H
Hassan Arafat
University of New Brunswick, Fredericton, Canada
David Bremner
David Bremner
University of New Brunswick
K
Kenneth B. Kent
University of New Brunswick, Fredericton, Canada
J
Julian Wang
IBM Canada, Toronto, Canada