Dynamic Tracing Support in the Java HotSpotTM
The JavaTM Platform, Standard Edition 6 (Java SE 6), introduces Dynamic Tracing (DTrace) support
within the Java HotSpotTM Virtual Machine. The Dynamic Tracing Framework- a part of the SolarisTM 10
Operating System - collects performance metrics by dynamically modifying the operating system kernel and
user processes to record data at specific points of interest, known as probes. Probes, in turn, are made available
through special kernel modules, called providers. The providers and probes included in the Java SE 6 release
make it possible for DTrace to collect performance data for applications written in the Java programming
The Java SE 6 release contains two built-in DTrace providers: hotspot and hotspot_jni. All probes
published by these providers are user-level statically defined tracing (USDT) probes, accessed by the PID of the
Java HotSpot Virtual Machine process.
The hotspot provider contains probes related to the following Java HotSpot Virtual Machine subsystems:
• VM Lifecycle Probes: For VM initialization and shutdown
• Thread Lifecycle Probes: For thread start and stop events
• Classloading Probes: For class loading and unloading activity
• Garbage Collection Probes: For system-wide garbage and memory pool collection
• Method Compilation Probes: Indicating which methods are being compiled, and by which compiler
• Monitor Probes: For all wait and notification events, plus contended monitor entry and exit events
• Application Probes: For fine-grained examination of thread execution, method entry/method returns, and
All hotspot probes originate in the VM library (libjvm.so), and as such, are also provided from programs
that embed the VM.
The hotspot_jni provider contains probes related to the JavaTM Native Interface (JNI), located at the entry
and return points of all JNI methods.
In addition, the DTrace 1jstack action prints mixed-mode stack traces including both Jav