- Running the profiler
- Profiler activation
- Running applications with the profiler
- Connect to profiled application
- Troubleshoot connection problems
- 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
- IDE integration
- Time measurement (CPU time, wall time)
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler API
- Command line tool to control profiling
- 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 method entry and method exit. If there are other threads/processes concurrently running on the system, they can affect the results.
You can customize CPU vs wall time measurement in CPU sampling settings and CPU tracing settings. By default, sampling measures wall time for I/O and sleep methods only, tracing - for all methods. Due to the nature of asynchronous sampling it can measure only CPU time.
Monitor profiling measures wall time for all waits and blocks.