DJXPerf: Identifying Memory Inefficiencies via Object-centric Profiling for Java

04/07/2021
by   Bolun Li, et al.
0

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 overhead and  5 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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/23/2022

OJXPerf: Featherlight Object Replica Detection for Java Programs

Memory bloat is an important source of inefficiency in complex productio...
research
06/28/2019

Pinpointing Performance Inefficiencies in Java

Many performance inefficiencies such as inappropriate choice of algorith...
research
08/18/2015

Cold Object Identification in the Java Virtual Machine

Many Java applications instantiate objects within the Java heap that are...
research
08/19/2019

The Strengths and Behavioral Quirks of Java Bytecode Decompilers

During compilation from Java source code to bytecode, some information i...
research
10/06/2021

Capturing Structural Locality in Non-parametric Language Models

Structural locality is a ubiquitous feature of real-world datasets, wher...
research
01/23/2019

Safely Abstracting Memory Layouts

Modern architectures require applications to make effective use of cache...
research
05/01/2023

Montsalvat: Intel SGX Shielding for GraalVM Native Images

The popularity of the Java programming language has led to its wide adop...

Please sign up or login with your details

Forgot password? Click here to reset