async-profiler vs VisualVM
async-profiler
github.comVisualVM
visualvm.github.ioSide by side
| Figure | async-profiler | VisualVM |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | — | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Profiling Software | 8.1 (#7) | 7.4 (#23) |
| Purpose | async-profiler is a low-overhead sampling profiler for Java that avoids the safepoint bias problem. | VisualVM integrates command line JDK tools with lightweight profiling for Java application troubleshooting in development and production. |
Plans
In their own words
async-profiler
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.
VisualVM
VisualVM is a free standalone tool for troubleshooting Java applications in development and production. It combines JDK command-line tools with monitoring for CPU use, garbage collection, heap and metaspace memory, loaded classes, and running threads. Sampling and instrumentation profilers help analyze performance and memory use. For diagnostics, it can capture thread dumps, browse heap dumps, analyze core dumps, and save application data for offline review. VisualVM can list remote Java applications when jstatd runs on the remote host, or connect to applications manually through JMX. Official and third-party plugins extend the tool, and a Security plugin provides a GUI for SSL/TLS settings. The site documents integrations or launchers for Eclipse, IntelliJ IDEA, and Visual Studio Code, plus a third-party NetBeans profiler. It runs on Windows, Linux, and macOS and is distributed as a ZIP archive and a macOS application bundle. The download page lists Oracle JDK and OpenJDK versions 8–26 and GraalVM versions 19–JDK 26. Some third-party plugins may not work after changes introduced in VisualVM 2.0.