---
name: jabrena/161-java-profiling-detect
source: https://app.decimal.ai/s/jabrena-161-java-profiling-detect@1/SKILL.md
source_sha256: 6c1a5ce14d2b
---

# Java Profiling Workflow / Step 1 / Collect data to measure potential issues

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?**

- Run application with profiling JVM flags (run-java-process-for-profiling.sh)
- Interactive profiling script (profiler/scripts/profile-java-process.sh) — copy exact template
- Directory structure: profiler/scripts/, profiler/results/, profiler/current/
- Automated OS/architecture detection and trusted preinstalled async-profiler validation
- CPU, memory, lock, GC, I/O profiling modes
- Flamegraph and JFR output with timestamped results

**Scope:** Use the exact bash script templates without modification or interpretation.

## Constraints

Copy bash scripts exactly from templates. Ensure JVM flags are applied for profiling compatibility. Verify Java processes are running before attaching profiler.

- **CRITICAL**: Copy the bash script templates exactly — do not modify, interpret, or enhance
- **SETUP**: Create profiler directory structure: profiler/scripts, profiler/results
- **SUPPLY CHAIN**: Do not download profiler binaries at runtime; require `ASYNC_PROFILER_HOME` or `profiler/current` to point to a trusted, preinstalled async-profiler distribution
- **EXECUTABLE**: Make scripts executable with chmod +x
- **BEFORE APPLYING**: Read the reference for exact script templates and setup instructions
- **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes
- **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance

## When to use this skill

- Improve the code with profiling
- Apply Profiling
- Refactor the code with profiling
- Add profiling support
- Collect JFR or async-profiler data for Java performance

## Workflow

1. **Read profiling setup reference**

Read `references/161-java-profiling-detect.md` and use script templates exactly as provided.

2. **Create profiler workspace and scripts**

Create `profiler/scripts` and `profiler/results`, copy setup/profile scripts verbatim, and make scripts executable.

3. **Run application with profiling compatibility**

Start Java process with required profiling JVM flags and verify target process availability for profiler attachment.

4. **Collect profiling artifacts**

Capture CPU/memory/lock/GC/I/O data and produce timestamped flamegraph and JFR outputs for analysis.

## Reference

For detailed guidance, examples, and constraints, see [references/161-java-profiling-detect.md](references/161-java-profiling-detect.md).