Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News JProfiler 7: Probes, Threads and Heap Inspections

JProfiler 7: Probes, Threads and Heap Inspections

This item in japanese

ej-technologies GmbH has released JProfiler 7.0. JProfiler is a Java SE/EE profiling tool which features CPU profiling, memory profiling, thread profiling and VM telemetry. The new features for version 7.0 are:

  • Built-in probes for JDBC, JMS, JNDI, Servlets, files, sockets and processes.
  • Custom probes with API and direct configuration in the JProfiler GUI.
  • Request tracking in the call tree view for executors, AWT, SWT and thread start.
  • Inspections view in the heap walker.
  • Primitive value and script filters in the outgoing references view of the heap walker.
  • Action for displaying the toString() values of objects in several heap walker views.
  • Redesigned references and graph views in the heap walker.
  • History in the call tree view.
  • Analyze long-running AWT events in the call tree.
  • "Run script" trigger action with direct script entry in JProfiler.
  • Show thread group names in thread history view.
  • Total line and column filters in the monitor history view.
  • Thread creation is now recorded in attach mode.
  • The NetBeans integration now runs JProfiler standalone to support mixed 32-bit and 64-bit installations.
  • Integration wizard for WebSphere 8.

JProfiler now has built-in probes for JDBC, JMS, JNDI, Servlets, files, sockets and processes, which records and analyzes data from various subsystems. Probes have a timeline view for long-lived objects. For example, database connections are displayed in a timeline which shows when they are idle, when they running a statement, or when they are running a batch transaction. Probes also have an events view, which shows events with thread and stack trace information. For example, the JDBC probe will display events like connecting to databases or running queries. Probes also have an objects view for details and statistics, a hot spot view that shows the most expensive methods calls, and a telemetries view that graphically displays the telemetries published by the probe. These built-in probes can be configured in the JProfiler session settings.

JProfiler also supports the creation of custom probes. It offers an API for developing a custom probe and deploying it together with the profiled application. JProfiler also offers a custom probe wizard that allows you to define your custom probes within the JProfiler GUI. You specify which methods in your application you want to intercept and create "interception scripts" that are called with the help of the JProfiler code editor. Custom probes can be added or changed without the need to restart the profiled application. Note that a run script trigger has also been added in this release, which is a way to execute code when a certain method is called, and thus an alternative to simple custom probes.

JProfiler also introduces the concept of request tracking, which makes profiling of parallel and multi-threaded applications easier. Request tracking connects call sites with execution sites between different threads in the call tree view. For example, you can use this feature to know how much time was spent to complete an asynchronous task or find the origin of an asynchronous task. Executors, Thread starts, and AWT/SWT events can all be tracked using request tracking.

A couple of enhancements have also been made on JProfiler heap walker.

  • In the outgoing and incoming references views you now see a list of objects, and the outgoing references directly show primitive data.
  • The object graph is now a separate view which is independent of the current object set. You can add and delete objects, and remove unconnected items. You can also search for paths between selected objects.
  • In the outgoing references view, you can now apply filters. You can restrict it to a primitive value of a selected reference chain, or you can enter a filter expression during a live profiling session.
  • In the references view, you can now evaluate and show the toString() values of objects during a live profiling session.
  • A new inspections view has been added where you can run a number of inspections on the current object set. You can run inspections like find duplicate strings, duplicate primitive wrappers, duplicate arrays, sparse arrays, zero length arrays, maps with bad key distributions, weakly referenced objects, objects with many incoming references, self references, and objects using custom filter expressions.

Standard license pricing starts at US$499 per developer. A 10 day trial is also available. If you own an older copy of JProfiler with support, you can upgrade your old license key for free. If you no longer have support, you will need to purchase an upgrade.

An open source alternative to JProfiler is Java VisualVM. Some commercial alternatives include YourKit and JProbe.

For more details about the new JProfiler 7.0, visit the JProfiler what's new and changelog pages.

Rate this Article