- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Solving performance problems
- CPU profiling
- Deadlock detector
- Memory profiling
- Garbage collection
- Monitor profiling
- Exception profiling
- Probes: monitor events of various kinds
- Performance Charts
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Summary, snapshot annotation, automatic deobfuscation
- Time measurement (CPU time, wall time)
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler Java API
- Profiler HTTP API
- Command line tool to control profiling
- FAQ: How to profile in my scenario?
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
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.
To launch an application with monitor profiling started,
monitors startup option.
The following actions are available in the popup menu:
- Lines can be copied by using File | Copy (Ctrl+C).
- File | Export to... (Ctrl+S) - exports view to different formats.
- Tools | Open in IDE (F7) - opens method declaration in IDE editor. See IDE integration.