The Java™ Virtual Machine Profiler Interface (JVMPI) is an experimental interface for profiling the Java virtual machine (JVM), which was first disclosed and implemented in Sun's Java 2 SDK, Standard Edition (J2SDK), version 1.2.
JVMTI is the superceder of JVMPI and the Java Virtual Machine Debugger Interface (JVMDI). JVMTI contains all the functionality of both JVMDI and JVMPI, plus new functions. JVMTI was added as part of J2SE 5.0. In future releases, the JVMDI and JVMPI interfaces will no longer be offered, and JVMTI will be the only option available.
For more information about implementing JVMTI, see the JVMTI Reference page at the Sun Microsystems, Inc. Web site.
JVMPI/JVMTI support places hooks in the JVM and the Just-in-time (JIT) compiler, which when activated, provide event information to a profiling agent. The profiling agent is implemented as an integrated language environment (ILE) service program. The profiler sends control information to the JVM for enabling and disabling JVMPI/JVMTI events. For example, the profiler may not be interested in method Entry or Exit hooks and could tell the JVM that it does not want to receive these event notifications. The JVM and JIT have JVMPI/JVMTI event hooks embedded that send event notifications to the profiling agent if the event is enabled. The profiler tells the JVM which events are of interest and the JVM sends notifications of the events to the profiler when they occur.
The service program QSYS/QJVAJVMPI provides the JVMPI functions.
A service program, called QJVAJVMTI, which resides in the QSYS library, supports the JVMTI functions.
For more information, see JVMPI by Sun Microsystems, Inc.