- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Solving performance problems
- CPU profiling
- Threads
- 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)
- Filters
- 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
- Settings
- FAQ: How to profile in my scenario?
Time measurement (CPU time, wall time)
There are two ways to measure time:
- CPU time - the time actually spent by CPU executing method code.
- Wall time - the real-world time elapsed between a pair of events, e.g. between method entry and method exit. If there are other threads/processes concurrently running on the system, they can affect the results.
CPU profiling
You can choose between CPU and wall time measurement in CPU sampling settings and CPU tracing settings.
By default, the classic synchronous sampling and asynchronous periodic sampling measure CPU time, and they can be configured to measure wall time instead.
Asynchronous CPU sampling always measures CPU time.
Tracing measures wall time by default and can be configured to measure CPU time instead.
Monitor profiling
Monitor profiling measures wall time for all waits and blocks.