jabrena/161-java-profiling-detect
Use when you need to set up Java application profiling to detect and measure performance issues — including trusted preinstalled async-profiler v4.x setup, problem-driven profiling (CPU, memory, threading, GC, I/O), interactive profiling scripts, JFR integration with Java 25 (JEP 518, JEP 520), or collecting profiling data with flamegraphs and JFR recordings. This should trigger for requests such as Improve the code with profiling; Apply Profiling; Refactor the code with profiling; Add profiling support; Collect JFR or async-profiler data for Java performance. Part of Plinth Toolkit
npx skills add https://github.com/jabrena/plinth --skill 161-java-profiling-detect
Set up the Java profiling detection phase using a trusted preinstalled async-profiler v4.x, problem-driven interactive profiling scripts, and comprehensive data collection for CPU hotspots, memory leaks, lock contention, GC issues, and I/O bottlenecks. Uses JEP 518 (Cooperative Sampling) and JEP 520 (Method Timing) for reduced overhead.
What is covered in this Skill?
Scope: Use the exact bash script templates without modification or interpretation.
Copy bash scripts exactly from templates. Ensure JVM flags are applied for profiling compatibility. Verify Java processes are running before attaching profiler.
ASYNC_PROFILER_HOME or profiler/current to point to a trusted, preinstalled async-profiler distributionRead references/161-java-profiling-detect.md and use script templates exactly as provided.
Create profiler/scripts and profiler/results, copy setup/profile scripts verbatim, and make scripts executable.
Start Java process with required profiling JVM flags and verify target process availability for profiler attachment.
Capture CPU/memory/lock/GC/I/O data and produce timestamped flamegraph and JFR outputs for analysis.
For detailed guidance, examples, and constraints, see references/161-java-profiling-detect.md.
Take jabrena/161-java-profiling-detect from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.