*J is a toolkit which serves two primary purposes:
To facilitate the collection of dynamic execution data for
Java programs
To provide a framework for implementing analyses of this
collected data quickly and easily
These two main goals are accomplished through the use of two
separate tools:
The *J profiling agent collects event trace data from a
Java program running in a Java Virtual Machine (JVM) which
implements the Java Virtual Machine Profiler Interface
(JVMPI)
The *J trace analyzer framework reads and analyzes the
traces produced by the agent, using either a built-in
analyses or custom ones.
In order to perform meaningful experiments in optimizing compilation and
run-time system design it is beneficial to quantify the behavior of
programs with a concise and precisely defined set of dynamic
software metrics.