async-profiler/async-profiler

Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 39 minutes ago
Added to GitGenius on September 7th, 2026
Created on April 23rd, 2016
Open Issues & Pull Requests: 61 (+0)
GitHub issues: Enabled
Number of forks: 984
Total Stargazers: 9,137 (+0)
Total Subscribers: 169 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 7.5 hours
Mean response time: 7.5 days
90th percentile: 9.1 days
Tracked items: 262

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 88% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 7% of issues opened in the past year have been closed. Three people close 79% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 48
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 434 days
Stale 30+ days: 43
Stale 90+ days: 40

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (103)
  • enhancement (76)
  • test (27)
  • external (16)
  • help wanted (16)
  • not a bug (12)
  • need more details (11)
  • duplicate (9)

Most active issues this week

Detailed Description

Async-profiler is a sampling CPU and heap profiler for Java that addresses the safepoint bias problem inherent in traditional Java profilers.

The tool works by using HotSpot-specific APIs to collect stack traces and track memory allocations without the overhead and bias limitations of conventional sampling approaches. Unlike traditional profilers, it monitors non-Java threads such as GC and JIT compiler threads, and includes native and kernel frames in its stack traces. This capability to see the full picture of what the JVM and its supporting systems are doing makes it possible to identify performance bottlenecks that other profilers miss. The profiler can track CPU time, heap allocations, native memory allocations and leaks, contended locks, and hardware performance counters including cache misses, page faults, and context switches.

Async-profiler suits teams working with OpenJDK or HotSpot-based Java runtimes who need accurate performance visibility without the distortions introduced by safepoint-based sampling. It is particularly valuable when investigating performance issues that involve garbage collection, JIT compilation, or native code, or when you need to understand memory allocation patterns. The tool is straightforward to use, requiring only a running Java process PID to begin profiling, and outputs results as interactive flame graphs viewable in a browser.

The project maintains official builds for Linux x64 and arm64, and macOS x64 and arm64, with additional community ports available for other architectures. The codebase is written in C++ and requires GCC or Clang for building, along with JDK 11 or later. The project provides nightly builds from the latest successful commits alongside stable releases, allowing users to access recent improvements or test against development versions. The build system is straightforward, using make with clear targets for testing and packaging binaries for distribution.