Fully featured low overhead profiler for Java EE and Java SE platforms.
Monitoring and profiling solution for Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

Monitor profiling

Monitor profiling helps you analyze synchronization issues, including:

  • which threads were calling wait(), and for how long
  • which threads were blocked on attempt to acquire a monitor held by another thread (synchronized methods/blocks), and for how long

The times are measured as wall time.

To start monitor profiling use "Start Monitor Profiling" toolbar button, after the profiler is connected to the profiled application.

Monitor profiling results are shown in the "Monitor Usage" view. Results can be grouped by waiting thread, by blocker thread or by monitor class name.

- waiting thread (thread which called wait())
- blocked thread (thread failed to immediately enter the synchronized method/block)
- blocker thread (thread that held the monitor preventing the blocked thread from entering the synchronized method/block)

(1) comboboxes to select results grouping
(2) checkbox to show blocked threads only (i.e. to filter out waiting threads)
(3) method back traces for the selection in the upper table

Percents in the tree are shown using the duration of monitor profiling (i.e. time passed since last start or clear) as 100%. This allows you to estimate the average percentage of time when thread waits/is blocked.

In some cases, it may also be useful to launch the application with monitor profiling started (see Startup options).