- Running the profiler
- Profiler activation
- Running applications with the profiler
- Connect to profiled application
- Troubleshoot connection problems
- Solving performance problems
- CPU profiling
- CPU usage estimation
- Asynchronous sampling
- Call counting
- CPU tab
- What-if: an ability to ignore particular methods or focus on particular methods only
- Comparing performance snapshots
- Sampling settings
- Tracing settings
- 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?
CPU sampling settings allow to customize some aspects of CPU sampling.
CPU tracing settings are specified separately, as described here.
When the settings are applied
The settings are applied each time you start CPU sampling. This means you can change the settings without restarting the profiled application.
Configuring the settings
To configure CPU sampling settings use Settings | CPU Sampling... in the main menu.
The settings are also accessible via a link in the CPU profiling toolbar popup:
The following dialog appears:
Specify whether CPU or wall time will be measured for profiled methods.
There can be any number of lines in the this format:
walltime=<fully qualified class name> : <method name> ( <comma-separated parameter types> )
walltime=<fully qualified class name>
Matching methods will be measured with wall time, all other methods - with CPU time.
If there are no lines with
walltimespecified, all methods will be measured with CPU time.
Wildcards ('*') are accepted. E.g. the following specifies all methods of class com.Foo.Bar, which names start with 'print':
walltime=com.Foo.Bar : print*(*)
The default configuration for CPU sampling is to measure wall time for I/O and sleep methods, and CPU time for all other methods.
Use Preconfigured Settings... allows you to choose one of recommended presets.
Specify how often samples are taken with
sampling_period_ms=<time in milliseconds>. By default samples are taken each 20 milliseconds (
CPU threshold (asynchronous sampling)
Specify CPU time threshold for asynchronous sampling with
cpu_threshold_ms=<time in milliseconds>. By default CPU time threshold is 10 milliseconds.
The settings are stored in the file
where user home corresponds to the account under which a profiled application is launched.
This file is automatically updated in your user home directory when you apply changes in the UI (see above).
You can edit this file manually, but note that it may be fully overwritten with Use Preconfigured Settings... in UI.
The settings file is read and applied when CPU sampling is started with:
- the command line tool
You can specify a custom settings file for a particular application
by using the startup option