Conclusions
We describe a system for exploring the low-level behavior of Java
applications. Our system generates traces containing data obtained
from hardware performance monitors and provides an interactive
graphical user interface to explore the data. Although prior work
presents tools for accessing
hardware performance monitors, our work is unique in that it correctly
attributes behavior to Java threads in a multithreaded system running on an
multiprocessor. Our work is implemented in the context of Jikes
RVM.
We demonstrate the usefulness of our tools by applying them to
understanding the behavior of pseudojbb, a variant of the SPECjbb2000
benchmark. We demonstrate that our tools are able to identify as-yet
unknown performance characteristics of the benchmark and are able to
guide us in understanding the reasons for the observed performance
characteristics. This understanding is essential for designing new
high-payoff optimizations and for tuning applications and run-time
systems for the best performance.