BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News JProfiler 6.0 Supports Dynamic Instrumentation and Locking History Graphs

JProfiler 6.0 Supports Dynamic Instrumentation and Locking History Graphs

This item in japanese

Bookmarks

The latest version of JProfiler supports dynamic instrumentation, locking history graphs and exceptional method run analysis. The company behind JProfiler, ej-technologies, recently announced the release of version 6.0 of the java application profiling software. The tool also allows monitor profiling and thread dumps view.

Auto-tuning for dynamic instrumentation determines methods with disproportional overhead and suggests them for exclusion in the JProfiler GUI. Short-running methods that are called very frequently can distort the overall numbers, because the time required to measure those methods takes much longer than the actual method itself. During profiling, the new version notifies of such overhead hot spots in the status bar so the developers can focus on the methods that take longer times to run.

Exceptional method runs feature helps the developers analyze the slowest executions of selected methods in detail. These are the invocations of a method that take most time. Often, a method performs very similarly over a huge number of invocations, but sometimes it takes much longer. Looking at the call tree does not help in this case, since the regular invocations dominate the single slow invocation. Now, the developers can mark a method as an exceptional method in the call tree views or the method statistics view and the call tree will show the slowest invocations separately.

Other new features in the JProfiler 6 include:

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. 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 visualized with red nodes and the tool tips show times and stack traces.

In the locking history graph the developers can record monitor events and navigate step by step through the recorded locking situations. A time line view puts the distribution of events into context and provides an alternative way of navigating to other monitor events.

Thread dumps view:
The new thread dumps view shows all call frames, not just the profiled classes. The developers can stay on the same thread and cycle through different thread dumps to see changes in the stack trace. This feature supports multiple thread dumps, and single threads or the entire thread dump can now be copied to the clipboard.

Monitor Profiling:
Since there can be a large amount of monitor events, you can mark certain threads or monitors as nodes of interest. A separate set of navigation buttons will then only step through events that involve at least one node of interest. Monitor events can be cumulated by selecting a region in the time line. Total blocking and waiting times as well as lists of stack traces are visible in the tool tip windows for the arrows in the locking graph. Monitor event recording can also be started and stopped with the JProfiler MBean or via the Controller API.

Method statistics view:
This view shows statistical data on the distribution of method execution times including a feature called the "outlier coefficient" that shows how strongly the slowest invocation deviates from the median time. In the lower part of the view, a graph shows the distribution of call times. Here, the y-axis has been set to a logarithmic display in order to show single outliers more clearly.

Tree Map Views:
Tree map view modes have been added to all views that show the call trees where the rectangles in the tree map are proportional to inherent time. You can mouse over rectangles to see the method information and zoom in to see a certain region in more detail. The stack trace information for the call tracer has also been added. At each trace in the call tracer, the current stack trace can be viewed in the lower window which makes it easier to assess the context of the selected trace.

For the java applications using Java SE version 5 or higher, the configuration of profiling can be done with a single VM parameter called "-agentpath". The new release supports changing profiling settings without restarting the profiled JVM for Java 6+ and loading snapshots from IDE integrations. The IDE integration support includes Netbeans 6.8 (with support for profiling Glassfish v3) and IntelliJ Idea 9. The profiling can be done with application servers like JBoss 5.1 and Oracle Weblogic 11g.

The latest release also supports profiling on two new platforms FreeBSD x86 and Linux PPC operating systems for both 32-bit and 64-bit JVMs.

Rate this Article

Adoption
Style

BT