Fully featured low overhead profiler for Java EE and Java SE platforms.
Performance monitoring and profiling of Jenkins, TeamCity, Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

Running applications with the profiler

Local and remote profiling

The profiled application and the profiler can run on the same machine or on different machines.

These modes are called local profiling and remote profiling respectively.

The profiler agent

To profile a Java application, be it local or remote, the profiler agent should be loaded into the JVM.

Approach 1: Start JVM with the profiler agent

This approach is recommended as it provides the full set of profiling capabilities. To learn how to apply it, see appropriate subtopic:

Approach 2: Attach the profiler to a running JVM instance started without the agent

Attaching the profiler agent to a running JVM instance simplifies profiling, as it avoids a special step to enable profiling: any running Java application can be profiled on demand.

However, attaching to a running JVM is not always possible, and some profiling features are not available.

Read more about attach.

Supported JVMs

  • Sun/Oracle/OpenJDK Java 6, Java 7, Java 8, Java 9, Java 10, Java 11, Java 12
  • JRockit 6 (R27.2.0 and newer)
  • IBM Java 6 (SR3 and newer), Java 7, Java 8, Java 11, Java 12

Supported platforms

  • Windows, 32-bit Java (x86) and 64-bit Java (x86-64):

    • Windows 10, Windows Server 2016, Windows Server 2019
    • Windows 8.1, Windows Server 2012 R2
    • Windows 8, Windows Server 2012
    • Windows 7, Windows Server 2008 R2
    • Windows Vista, Windows Server 2008
    • Windows XP, Windows Server 2003
  • macOS 10.6 and newer, Intel, 32-bit and 64-bit Java
  • Linux, 32-bit Java and 64-bit Java:

    • x86/x86-64
    • ARM
    • ppc/ppc64/ppc64le
  • AIX, 32-bit Java (ppc) and 64-bit Java (ppc64)
  • FreeBSD 8 and newer, i386 and amd64 (aka x86-64). Limitation: CPU profiling will always measure wall time and thread telemetry will show the same CPU time - the process CPU time - for all threads, because FreeBSD cannot measure per-thread CPU time.
  • HP-UX IA64, 32-bit and 64-bit Java
  • Solaris 9 and newer, SPARC, 32-bit and 64-bit Java
  • Solaris 10 and newer, x86, 32-bit and 64-bit Java