Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. JVM
  3. async-profiler

async-profiler

Apache-2.0C++v4.5

A low overhead sampling profiler for Java that avoids safepoint bias and supports CPU, heap, and native memory profiling.

Visit WebsiteGitHubGitHub
9.1k stars984 forks0 contributors

What is async-profiler?

Async-profiler is a low overhead sampling profiler for Java applications that avoids safepoint bias, a common problem in traditional profilers. It supports profiling CPU time, heap allocations, native memory, lock contention, and performance counters, providing accurate performance data with minimal impact on the application. The tool works with OpenJDK and other HotSpot-based JVMs, offering features like kernel and native frame visibility.

Target Audience

Java developers, performance engineers, and DevOps professionals who need to diagnose performance issues, memory leaks, or lock contention in production or development environments. It is particularly useful for those working with high-performance or resource-intensive Java applications.

Value Proposition

Developers choose async-profiler for its low overhead and accuracy, as it avoids safepoint bias and provides insights into native memory and non-Java threads. Its support for multiple profiling modes and integration with tools like FlameGraph makes it a versatile and reliable choice for performance analysis.

Overview

Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

Use Cases

Best For

  • Diagnosing CPU performance bottlenecks in Java applications
  • Identifying memory leaks and heap allocation hotspots
  • Profiling native memory usage and non-Java threads
  • Analyzing lock contention and synchronization issues
  • Monitoring hardware performance counters like cache misses
  • Performance debugging in containerized or production environments

Not Ideal For

  • Projects running on non-HotSpot JVMs like IBM J9 or GraalVM
  • Teams needing a graphical profiling interface without command-line interaction
  • Environments where Windows is the primary operating system
  • Simple profiling tasks that can be addressed with built-in JVM tools like jconsole or VisualVM

Pros & Cons

Pros

Low Overhead Sampling

Uses sampling techniques to minimize performance impact, as emphasized in the README's philosophy of providing comprehensive data with minimal intrusion.

Avoids Safepoint Bias

Leverages HotSpot-specific APIs to collect stack traces without the safepoint bias problem, ensuring accurate CPU time profiling as described in the project description.

Comprehensive Profiling Modes

Supports CPU, heap allocations, native memory, lock contention, and performance counters, detailed in the Key Features section for versatile analysis.

Native Frame Visibility

Shows native and kernel frames in stack traces, allowing deeper insights into system-level issues, as mentioned in the README for profiling non-Java threads.

Container Integration

Includes documentation for profiling in containers, making it suitable for modern deployment environments like Docker, as covered in the Profiling In Container guide.

Cons

HotSpot JVM Dependency

Only works with OpenJDK and other HotSpot-based JVMs, limiting its use with alternative Java runtimes like J9 or GraalVM, as stated in the README.

No Built-in GUI

Requires command-line usage or integration with external tools for visualization, unlike some commercial profilers with graphical interfaces, which may increase the learning curve.

Complex Build Requirements

Building from source requires specific tools like GCC 7.5.0+, JDK 11+, and static libstdc++, as noted in the Minimum Requirements, adding setup overhead for custom deployments.

Frequently Asked Questions

Quick Stats

Stars9,137
Forks984
Contributors0
Open Issues49
Last commit5 days ago
CreatedSince 2016

Tags

#cpu-profiling#performance-analysis#java-profiling#low-overhead#flamegraph#memory-profiling#hotspot-jvm

Built With

G
GCC
M
Make
C
Clang
J
Java
C
C++

Links & Resources

Website

Included in

JVM2.2k
Auto-fetched 11 hours ago

Related Projects

leakcanaryleakcanary

A memory leak detection library for Android.

Stars29,991
Forks3,992
Last commit8 days ago
ZipkinZipkin

Zipkin is a distributed tracing system

Stars17,457
Forks3,101
Last commit1 month ago
BTraceBTrace

Production-safe dynamic tracing and diagnostics for Java applications—attach to live JVMs with no restart or recompilation.

Stars5,994
Forks956
Last commit6 days ago
micrometermicrometer

An application observability facade for the most popular observability tools. Think SLF4J, but for observability.

Stars4,896
Forks1,144
Last commit13 hours ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub