async-profiler
github.com
What it is
async-profiler is a free, self-hosted sampling profiler for Java designed to keep overhead low and avoid safepoint bias. It works with OpenJDK and other runtimes based on the HotSpot JVM, and stack traces can include non-Java threads as well as native and kernel frames. It profiles CPU time, Java-heap and native-memory allocations, memory leaks, contended locks, and hardware or software performance counters. Documented modes include CPU, allocation, wall-clock, Java-method, and multiple-events profiling. Results can be saved as collapsed stacks, flame graphs, HTML tree views, or text; an interactive Flame Graph can be viewed in a browser. Officially maintained builds are available for Linux and macOS on x64 and arm64. Developers can use the Java API as a Maven dependency, and IntelliJ IDEA includes async-profiler in its Java Profiler settings. It can profile Java processes in Docker or LXC from inside a container or from the host. Building it requires make, GCC 7.5.0 or later or Clang 7.0.0 or later, static libstdc++, and JDK 11 or later.
Spec sheet
- Purpose
- async-profiler is a low-overhead sampling profiler for Java that avoids the safepoint bias problem.Read 1 Oct 2026 · github.com
- Build requirements
- Building requires make, GCC 7.5.0+ or Clang 7.0.0+, static libstdc++, and JDK 11+.Read 1 Oct 2026 · github.com
- Container profiling
- It can profile Java processes in Docker or LXC containers from inside the container or from the host system.Read 1 Oct 2026 · github.com
- IDE integration
- IntelliJ IDEA bundles async-profiler and exposes it through the Java Profiler settings.Read 1 Oct 2026 · github.com
- Java integration
- A Java API is published to Maven Central and can be used as a Maven dependency.Read 1 Oct 2026 · github.com
- Native visibility
- It monitors non-Java threads and shows native and kernel frames in stack traces.Read 1 Oct 2026 · github.com
- Nightly retention
- Nightly binaries for previous commits are kept for 30 days.Read 1 Oct 2026 · github.com
- Official builds
- Officially maintained builds are provided for Linux x64 and arm64 and macOS x64 and arm64.Read 1 Oct 2026 · github.com
- Output
- The profiler can save results as an interactive Flame Graph viewable in a browser.Read 1 Oct 2026 · github.com
- Output formats
- Supported output formats include collapsed stacks, flame graphs, HTML tree views, and text.Read 1 Oct 2026 · github.com
- Profiling modes
- The documentation lists CPU, allocation, wall-clock, Java-method, and multiple-events profiling modes.Read 1 Oct 2026 · github.com
- Profiling targets
- It can profile CPU time, Java-heap allocations, native-memory allocations and leaks, contended locks, and hardware or software performance counters.Read 1 Oct 2026 · github.com
- Runtime support
- It works with OpenJDK and other Java runtimes based on the HotSpot JVM.Read 1 Oct 2026 · github.com
- Security reporting
- Security issues should be reported to AWS/Amazon Security through its vulnerability reporting page instead of a public GitHub issue.Read 1 Oct 2026 · github.com
- Span API
- The Span API records latency-sensitive intervals into the same JFR recording as profiling samples and is allocation-free.Read 1 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Free under Apache License 2.0.
- Profiles CPU, allocations, locks, and performance counters.
- Stack traces can show native and kernel frames.
- Provides maintained Linux and macOS builds.
- Can profile Java processes in Docker or LXC.
Limits
- Official builds are listed for Linux and macOS only.
- Building requires JDK 11 or later.
- Building requires GCC 7.5.0+ or Clang 7.0.0+.
Who it suits
It suits developers investigating Java CPU, memory, lock, or wall-clock behavior, including those working with HotSpot-based runtimes. Its container support and multiple output formats may also suit teams profiling Java processes in Docker or LXC.
Verdict
async-profiler offers broad profiling targets and several ways to inspect results at no charge. Check its build requirements and platform support if maintained binaries do not fit your setup.
Where Specifiction places it
- Profiling Software#7 of 298.1