JProfiler is an award-winning all-in-one Java proFILEr. JProfiler's intuitive GUI helps you find performance bottlenecks, pin down memory leaks and resolve threading issues.
features:
Tree views of incoming and outgoing references in the heap walker reference view. These new views modes complement the existing reference graph and are ideally suited for analyzing long Chains of references. The tree of incoming references has the same selection options and path to GC root functionality as the reference graph.
The cumulated reference views of the heap walker are now a tree table. Previously, you had to create new object sets to follow chains of cumulated incoming or outgoing references for the current object set. Now, you can follow multiple reference Steps in the same view.
You can now select all exclusively referenced objects in the reference view of the heap walker. Those are the objects that would be garbage collected if a particular object were removed from the heap. The Action is available in the reference graph as well as in the new reference tree views.
Types of object arrays are now resolved when profiling with Java 5+ and the new profiling interface JVMTI. This change affects all memory views and the heap walker. Previously, all object arrays were grouped together. For example, java.lang.String[] and java.lang.Object[] arrays are now separate entries.
new:
Locking graphs. The monitor analysis in JProfiler was extended with graphs that show the current locking situation and the history of all recorded locking situations. All views that concern monitor analysis are now in their own "Monitor views" section. The current locking graph view shows all threads that are currently waiting or blocking on a monitor as well as those that hold a contended monitor. Deadlocks are are visualized with red nodes. Tool tips show times and stack traces.