Characterizing the Memory Behavior of Java Workloads
Yefim Shuf
yshuf@cs.princeton.edu
The goal of this work is to understand the memory behavior of important Java workloads used in benchmarking JVMs and JIT compilers and to provide computer architects and the implementors of JVM components with structured information (at different levels of detail) about the Java workloads.
We first study high-level characteristics of these Java workloads, which are completely independent of the hardware configuration. We then obtain, based on simulation, a series of increasingly detailed data on the behavior of these programs with respect to the data TLB and caches. In the process, we make interesting discoveries about TLB behavior and limitations of data prefetching schemes discussed in the literature. As a result, we develop a set of recommendations to computer architects and JVM developers on techniques to run Java programs more efficiently, and evaluate some of the techniques discussed in the literature.
This work also makes the first attempt to compare the characteristics of SPECjvm98 to those of a server-oriented benchmark, pBOB, and explain why the current set of SPECjvm98 benchmarks may not be adequate for a comprehensive and objective evaluation of JVMs and JIT compilers.
This is a joint work with Mauricio J. Serrano (Intel Research), Manish
Gupta (IBM Research), and Jaswinder Pal Singh (Princeton).