A powerful facility of trigger and actions has been added. With triggers, you can automatically react to certain events in the JVM and perform a number of profiling-related actions. Triggers and actions are defined in the session settings and can be used for profiling with the JProfiler GUI as well as for offline profiling.
The list of available actions depends on the trigger type. Most actions are configurable and dispatch commands to the profiling agent.
Selecting methods for method triggers is most easily done in the call tree and hot spots views where you can create a new method trigger or modify an existing method trigger based on the currently selected node.
Trigger configurations can be saved as trigger sets, so they are easily reusable for other sessions.
JProfiler can now read HPROF memory snapshots. With recent patch levels of Sun Java 1.4 and Java 5 JREs, you can save HPROF memory snapshots with the -XX:+HeapDumpOnOutOfMemoryError VM parameter when an OutOfMemoryError occurs. In this way, you can analyze memory leaks from JVMs that were not profiled with JProfiler. Starting with Java 5, HPROF memory snapshots can also be saved from JConsole. In Java 6, you can locally attach with JConsole to every Java process without command line modifications, so there is always a way to analyze memory consumption when a Java application behaves badly.
When viewing an HPROF memory snapshot, only certain parts of the heap walker are available, other sections are grayed out.
When profiling with Java 6, you can also save an HPROF memory snapshot from the JProfiler GUI. This is of interest if there is very little physical memory left. The new trigger system also provides an action to save an HPROF snapshot.
The VM telemetries have been overhauled. There is additional data that has become available in Java 5 and Java 6 that is now displayed by JProfiler. The Memory VM telemetry now displays a list of memory pool in a drop down list at the top, maximum pool sizes are displayed where available:
The Recorded Throughput VM telemetry now displays how many recorded object are created and garbage collected per second:
The GC Activity VM telemetry displays how much time was spent in the garbage collector. The various GC types as exposed by the JVM can be viewed separately:
The Threads VM telemetry now resolves all thread states separately:
The CPU Load VM telemetry displays the percentage of the total CPU time that is consumed by the profiled application. There is also a trigger event type that is fired when a CPU load threshold is reached.
A call tracer view has been added. The call tracer shows you the chronological sequence of all recorded method calls. The call traces are grouped by thread, package and class so that you can easily find specific areas of interest. It is possible to hide threads, packages classes or single methods in order to trim the amount of information to something that can be analyzed more easily. This view is useful for analyzing use cases where multiple thread are involved or analyze the control flow in detail from a perspective that cannot be achieved with a debugger.
The session settings have been redesigned. All session settings are now accessible in a single dialog. The method call collection filters have been rewritten. You can now specify a list of inclusive and exclusive filters. New sessions receive a list of default excludes that excludes common frameworks or libraries. Filters can be grouped and saved as templates for easy reuse in other sessions.
Profiling settings templates are now adjustable outside the session startup dialog and present an overview of important settings, Custom profiling settings templates can now be saved.
The session startup dialog now offers quick summaries and edit links for profiling settings, filter settings and triggers settings. This is the dialog that is most important for IDE integration users.
You can now define defaults for new sessions. A default filter template, a default profiling settings template and a default trigger set are applied to every newly created session.
The new JProfiler MBean is registered for Java 5+ JVMs, so you can use JConsole or other technologies that support MBeans to control the profiling agent manually. This is especially useful for offline profiling. Previously you had to use the API and write your own user interface to expose the controller to the user.
The JProfiler eclipse integration now supports eclipse WTP. This means that applications servers can be profiled from within eclipse without any further configuration. Previously you had to modify VM parameters manually or use JProfiler standalone.