JMP is a profiler for java that can be used to trace objects usage and method timings. JMP uses the JVMPI interface to gather statistics and interact with the JVM.
JMP normally uses one window to show the classes in memory. Each class has summary information for number of instances and total bytes of used memory for all the instances.
JMP can perform heap analysis and has the ability to show which objects own (have references to) all the objects of a specified class. This is a great way to find memory leaks.
JMP also shows method timings and calls in another window. Several columns show time taken in the method, number of calls to each method, time taken in methods called.
JMP collects information about which method are called and from where, this information is used to build call graphs.
JMP uses one extra thread to be able to drive the GTK+ interface, with a timer to systematically update the stats.
JMP is written in C, it is designed for speed.