DJXPerf: Identifying Memory Inefficiencies via Object-centric Profiling for Java
Not on the map. Why?
Abstract (arXiv)
Java is the "go-to" programming language choice for developing scalable enterprise cloud applications. In such systems, even a few percent CPU time savings can offer a significant competitive advantage and cost saving. Although performance tools abound in Java, those that focus on the data locality in the memory hierarchy are rare. In this paper, we present DJXPerf, a lightweight, object-centric memory profiler for Java, which associates memory-hierarchy performance metrics (e.g., cache/TLB misses) with Java objects. DJXPerf uses statistical sampling of hardware performance monitoring counters to attribute metrics to not only source code locations but also Java objects. DJXPerf presents Java object allocation contexts combined with their usage contexts and presents them ordered by the poor locality behaviors. DJXPerf's performance measurement, object attribution, and presentation techniques guide optimizing object allocation, layout, and access patterns. DJXPerf incurs only ~8% runtime overhead and ~5% memory overhead on average, requiring no modifications to hardware, OS, Java virtual machine, or application source code, which makes it attractive to use in production. Guided by DJXPerf, we study and optimize a number of Java and Scala programs, including well-known benchmarks and real-world applications, and demonstrate significant speedups.
Key facts. Cited by 2 papers in the map (data through 14 Oct 2026). First posted on arXiv 7 Apr 2021.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2024: 1; 2025: 1.
2 papers.
- 2024Multi-Programming Language Sandbox for LLMscited by 10
- 2025Interpreting Performance Profiles with Deep Learningcited by 0
- 2025Interpreting Performance Profiles with Deep Learning1 Aug 2025
- 2024Multi-Programming Language Sandbox for LLMs30 Oct 2024