Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/jabrena-161-java-profiling-detect/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -56% | 0% |
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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→pass | 16,896 | 13,509 | -20% | 1 | 1 | 0% | 2,771 | 3,374 | +22% | 0 | 0 | — |
case-01 | fail→pass | 21,026 | 19,519 | -7% | 1 | 1 | 0% | 3,600 | 4,605 | +28% | 0 | 0 | — |
case-02 | fail→fail | 24,331 | 8,306 | -66% | 1 | 1 | 0% | 4,398 | 1,336 | -70% | 0 | 0 | — |
case-22 | pass→pass | 16,723 | 14,438 | -14% | 1 | 1 | 0% | 2,621 | 2,959 | +13% | 0 | 0 | — |
case-04 | fail→pass | 20,901 | 13,903 | -33% | 1 | 1 | 0% | 3,578 | 3,376 | -6% | 0 | 0 | — |
case-05 | fail→fail | 20,005 | 3,675 | -82% | 1 | 1 | 0% | 3,246 | 1,106 | -66% | 0 | 0 | — |
case-06 | fail→pass | 17,771 | 8,192 | -54% | 1 | 1 | 0% | 2,523 | 2,000 | -21% | 0 | 0 | — |
case-07 | fail→pass | 18,548 | 4,290 | -77% | 1 | 1 | 0% | 3,084 | 1,369 | -56% | 0 | 0 | — |
case-08 | pass→pass | 13,239 | 3,408 | -74% | 1 | 1 | 0% | 1,895 | 1,136 | -40% | 0 | 0 | — |
case-09 | fail→fail | 12,142 | 7,507 | -38% | 1 | 1 | 0% | 2,025 | 947 | -53% | 0 | 0 | — |
case-10 | pass→pass | 12,590 | 22,394 | +78% | 1 | 1 | 0% | 2,360 | 4,644 | +97% | 0 | 0 | — |
case-11 | pass→pass | 15,516 | 2,991 | -81% | 1 | 1 | 0% | 2,272 | 1,068 | -53% | 0 | 0 | — |
case-12 | fail→pass | 9,671 | 3,171 | -67% | 1 | 1 | 0% | 1,581 | 1,154 | -27% | 0 | 0 | — |
case-13 | fail→pass | 11,527 | 3,045 | -74% | 1 | 1 | 0% | 1,694 | 1,237 | -27% | 0 | 0 | — |
case-14 | pass→pass | 10,829 | 10,986 | +1% | 1 | 1 | 0% | 1,932 | 2,689 | +39% | 0 | 0 | — |
case-15 | pass→pass | 10,766 | 10,192 | -5% | 1 | 1 | 0% | 1,613 | 2,401 | +49% | 0 | 0 | — |
case-16 | pass→pass | 15,414 | 8,283 | -46% | 1 | 1 | 0% | 2,955 | 2,005 | -32% | 0 | 0 | — |
case-17 | fail→pass | 19,686 | 13,989 | -29% | 1 | 1 | 0% | 3,505 | 3,260 | -7% | 0 | 0 | — |
case-18 | fail→pass | 15,148 | 2,183 | -86% | 1 | 1 | 0% | 2,491 | 931 | -63% | 0 | 0 | — |
case-19 | fail→fail | 10,302 | 3,213 | -69% | 1 | 1 | 0% | 1,791 | 1,152 | -36% | 0 | 0 | — |
case-20 | fail→fail | 13,238 | 3,982 | -70% | 1 | 1 | 0% | 2,036 | 1,299 | -36% | 0 | 0 | — |
case-21 | pass→fail | 17,271 | 12,899 | -25% | 1 | 1 | 0% | 2,892 | 2,799 | -3% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.