A wrapper for Linux perf that enables profiling of Java programs with system and JVM stack traces combined.
PerfJ is a wrapper for Linux perf specifically designed for Java programs. It solves the problem of traditional system profilers not being able to show Java methods by enabling combined profiling of both Java code and system-level operations. This allows developers to see complete stack traces including JVM internals, system calls, and application code in a single flame graph.
Java developers and performance engineers working on Linux systems who need to diagnose performance bottlenecks in production or development environments. It's particularly valuable for teams running Java applications where understanding both application and system-level performance is critical.
Developers choose PerfJ because it provides the only open-source solution that combines Linux perf's system profiling with JVM method visibility, offering a complete performance picture without requiring commercial profilers. Its integration with flame graphs makes complex performance data visually intuitive to analyze.
PerfJ is a wrapper of linux perf for java programs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Shows both Java methods and system code paths in a single flame graph, eliminating the historical divide between system and JVM profilers for a complete performance view.
Leverages JDK 8u60+ frame pointer preservation for precise stack traces, addressing JIT compilation issues and ensuring reliable profiling data.
Integrates with Brendan Gregg's FlameGraph tool to produce color-coded flame graphs, making it intuitive to identify Java, JVM, and system bottlenecks.
Built as a safer and more user-friendly alternative to perf-map-agent, simplifying the process of profiling Java applications with Linux perf.
Only works on Linux x86_64 with specific JDK versions, excluding users on other operating systems or older Java environments.
Requires installing Linux perf, building with Gradle, and managing dependencies, which can be cumbersome compared to out-of-the-box profilers.
Licensed under GPLv2, which may impose compliance burdens for commercial or proprietary software projects seeking more permissive alternatives.
Relies on third-party tools like perf and FlameGraph, adding maintenance overhead and potential integration issues for some setups.