background image
<< To obtain a differential report | Performance Profiling Results >>
<< To obtain a differential report | Performance Profiling Results >>

JVMPI Agent

Runtime Analysis
JVMs implement a heap that stores all objects created by the Java code. Memory for
new objects is dynamically allocated on the heap. The JVM automatically frees objects
that are no longer referenced by the program, preventing many potential memory
issues that exist in other languages. This process is called
garbage collection
.
In addition to freeing unreferenced objects, a garbage collector may also reduce heap
fragmentation, which occurs through the course of normal program execution. On a
virtual memory system, the extra paging required to service an ever growing heap
can degrade the performance of the executing program.
JVMPI Agent
Because of the memory handling features included in the JVM, Memory Profiling for
Java is quite different from the feature provided for other languages. Instead of
Source Code Insertion technology, the Java implementation uses a JVM Profiler
Interface (JVMPI) Agent whose task is to monitor JVM memory usage and to provide
a memory dump upon request.
The JVMPI Agent analyzes the following internal events of the JVM:
·
Method entries and exits
·
Object and primitive type allocations
The JVMPI Agent is a dynamic library --DLL or lib.so depending on the platform
used-- that is loaded as an option on the command line that launches the Java
program.
During execution, when the agent receives a snapshot trigger request, it can either an
instantaneous JVMPI dump of the JVM memory, or wait for the next garbage
collection to be performed.
Note Information provided by the instantaneous dump includes actual
memory use as well as intermediate and unreferenced objects that are
normally freed by the garbage collection. In some cases, such information may
be difficult to interpret correctly.
The actual trigger event can be implemented with any of the following methods:
·
A specified method entry or exit used in the Java code
·
A message sent from the Snapshot button or menu item in the graphical user
interface
·
Every garbage collection
The JVMPI Agent requires that the Java code is compiled in debug mode, and cannot
be used with Java in just-in-time (JIT) mode.
81