macOS
brew install async-profilerlocal Homebrew formula metadata
sudo port install async-profilerMacPorts ports tree · java/async-profiler/Portfile · source: api.github.com
brew
Sampling CPU & HEAP profiler for Java using AsyncGetCallTrace + perf_events. Version 4.4 via Homebrew; verified 2026-06-22.
install
brew install async-profilerlocal Homebrew formula metadata
sudo port install async-profilerMacPorts ports tree · java/async-profiler/Portfile · source: api.github.com
nix profile install nixpkgs#async-profilernixpkgs package indexes · pkgs/by-name/as/async-profiler/package.nix · source: api.github.com
overview
Sampling CPU & HEAP profiler for Java using AsyncGetCallTrace + perf_events
history
async-profiler is a low-overhead sampling profiler for HotSpot-based Java runtimes. Its package-manager identity is unusually strong because the everyday tool is a small native CLI, `asprof`, that produces artifacts Java engineers already trade around: flame graphs, collapsed stacks, JFR recordings, traces, trees, heatmaps, and converter outputs.
The project started in 2016 with an initial proof of concept for profiling Java without the safepoint bias that affected many traditional JVM profilers. The README describes the core design as combining HotSpot-specific stack collection with native facilities such as perf events, so it can show Java frames alongside native, kernel, GC, and JIT compiler activity.
Over time async-profiler grew from a CPU sampler into a broader observability utility. Official documentation now covers CPU, allocation, native memory, lock, wall-clock, hardware/software counter, container, Java Flight Recorder, FlameGraph, OTLP, pprof, and converter workflows.
The project became a default recommendation in the JVM performance community because it is scriptable, produces portable output, and does not require a heavyweight GUI profiler. The package is distributed through Homebrew, MacPorts, and Nix in the supplied package metadata, while upstream publishes Linux and macOS binaries plus nightly builds from GitHub Actions.
Recent 4.x releases show continued production-oriented maintenance rather than archival status: v4.3 added native lock profiling, latency filtering, Prometheus-format metrics, and Java-agent/JMX control, while v4.4 added differential flame graphs and call-trace memory limits.
The normal package-manager workflow is to install the CLI and run `asprof` against a live JVM PID, for example saving a 30-second profile to an HTML flame graph. More advanced workflows attach it as a Java agent, run continuous loops, emit JFR/OTLP/pprof-compatible data, or convert recordings with the bundled converter tooling.
async-profiler is one of those packages whose formula matters more than its size suggests: a native tool with JVM-specific privileges, OS-specific packaging, architecture-specific binaries, and output formats that plug into a large performance-debugging ecosystem. It is also a good example of a CLI package that package managers make discoverable to users who otherwise would only encounter it through conference talks or performance postmortems.
security posture
broad file, network, media, or database tool signal.
blue risk · medium confidence · tool
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
asprof | cli | global executable | |
jfrconv | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://github.com/async-profiler/async-profiler
install metadata
| Package key | brew:async-profiler |
|---|---|
| Version | 4.4 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/async-profiler |
| Homepage | https://github.com/async-profiler/async-profiler |
| Repository | https://github.com/async-profiler/async-profiler |
| Upstream docs | https://github.com/async-profiler/async-profiler#readme |
| License | Apache-2.0 |
| Source archive | https://github.com/async-profiler/async-profiler/archive/refs/tags/v4.4.tar.gz |
| Last updated | 2026-06-22T14:02:47-07:00 |
| Pulse | updated |
| Build dependencies | cmake, openjdk |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | async-profiler |
| Version Scheme | 0 |
| Revision | 0 |
| Head Version | HEAD |
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
async-profiler
nix profile install nixpkgs#async-profilerasync-profiler
sudo port install async-profilersource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.