async-profiler Java Profiler

async-profiler Java Profiler

github.com

1

About this website

async-profiler is a low-overhead sampling profiler for Java that tracks CPU, memory allocation, and lock contention without the performance penalties of traditional JVMTI-based profilers. Created by Andrei Pangin at Azul Systems, it has over 8,000 stars as of 2026. Unlike traditional Java profilers that use JVMTI (which can add 10-30% overhead and cause safepoint bias), async-profiler uses Linux perf_events and HotSpot-specific APIs with less than 1% overhead. Key features include: CPU profiling (sampling call stacks at configurable intervals using perf_events and HotSpot AsyncGetCallTrace for accurate stack walking, avoiding safepoint bias), allocation profiling (tracking memory allocations by intercepting HotSpot operations, identifying memory-hungry code paths and GC pressure sources), lock profiling (monitoring contended Java monitors and ReentrantLock instances, identifying thread contention), wall-clock profiling (profiling all threads including blocked ones, providing complete latency picture), multi-modal profiling (collecting CPU, allocation, and lock data simultaneously), flame graph output (HTML/SVG with jfr2flame converter), JFR output (Java Flight Recordings compatible with JDK Mission Control and IntelliJ Profiler), event-specific tracing (compilation, GC, class loading, and thread state changes), Agent API (programmatic profiling control via Java agent), and cross-platform support (Linux, macOS, and Windows via WSL).

Tags & Categories

Categories

Tags

Statistics

1
Views
0
Clicks
0
Like
0
Dislike

Comments

Log In to post a comment

No comments yet. Be the first!