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.

Profiling overhead: how to reduce or avoid

The profiler may add some overhead to the performance of applications you profile. This overhead may vary from virtually zero to significant, depending on the conditions described below.

Overhead of running an application with the profiler

The overhead depends on the profiling capabilities specified on the Welcome screen.

Enabling CPU tracing and/or object allocation recording adds overhead which is, however, acceptable for most applications.

If CPU tracing and object allocation recording are disabled, the overhead is virtually zero.

Overhead when measuring is performed

When CPU profiling or object allocation recording are running, the profiler adds extra overhead. After measuring is done and turned off, overhead should decrease to the initial level described above.

Tracing overhead is greater than sampling overhead.

Object allocation recording overhead depends on the number of recorded objects. To reduce the overhead, record fewer objects with the help of the "Record each..." constraints.

Snapshot capture

During the capture, the profiled application is paused. The time it takes to capture a memory snapshot depends on the heap size. Capturing memory snapshots of huge heaps takes more time because of the intensive use of the system swap file (if little free physical memory is available).