The Java Virtual Machine (JVM) has a couple of interfaces that make it possible to retrieve information about the running program and/or the virtual machine at run-time. A debugging interface has been present for a long time, and some time later a profiling interface (JVMPI) was added.

With the imminent introduction of the definitive version of J2SE 1.5 a new interface was developed that integrated all the former interfaces. This interface is called the Java Virtual Machine Tool Interface (JVMTI). The goal of this year-project is to develop an application that uses the JVMTI and enables you to:

  • Selectively trace applications. (meaning: logging the sequence of method-calls in a logfile)
  • Keep an eye on the current stack/heap use.

Further, there are some optional topics that, using the JVMTI interface, can be tackled, e.g. thread analysis, code coverage (is there code that is never executed?).

Licence: GPL