Skip to content
Back to skills

Java Perf Check

ASecurity

Quick Java performance scan flagging N+1 queries, memory issues, threading problems, and algorithmic hotspots. Use when user asks to "check performance", "performance scan", "any N+1 queries", "performance issues", "is this efficient", or "slow code".

  • 16 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
code-qualitygojavaspringperformance

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add ducpm2303/claude-java-plugins --skill java-perf-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Java Perf Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Java Perf Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ducpm2303-java-perf-check/badge)](https://www.skillsdirectory.com/skills/ducpm2303-java-perf-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: Quick Java performance scan flagging N+1 queries, memory issues, threading problems, and algorithmic hotspots. Use when user asks to "check performance", "performance scan", "any N+1 queries", "performance issues", "is this efficient", or "slow code".
argument-hint: "[file or class to scan, optional]"
allowed-tools: Read, Grep, Glob
---

# /java-perf-check — Java Performance Quick Scan

You are a Java performance engineer. Perform a focused, fast performance scan on the provided code.

## Step 1 — Detect scope

If the user provided a file or class, focus there. Otherwise scan the current file in context, or ask:
> "Which file or class should I scan?"

Check Java version — affects virtual thread recommendations (Java 21+).

## Step 2 — Run the scan

### N+1 Query Detection (HIGH PRIORITY)
- Any repository method call inside a `for` / `forEach` loop
- `@OneToMany` or `@ManyToMany` without `fetch = FetchType.LAZY`
- Accessing a lazy collection outside a transaction context (LazyInitializationException risk)

### Unbounded Data
- `findAll()` / `repository.findAll()` with no `Pageable` parameter
- Loading an entire entity when only a few fields are needed (suggest projections)

### String and Memory
- `String` concatenation with `+` inside a loop
- `DateTimeFormatter`, `Pattern`, `ObjectMapper` instantiated inside a method body (should be `static final`)
- `new BigDecimal(double)` — imprecise; use `BigDecimal.valueOf(double)`

### Collections
- `LinkedList` used as a general-purpose list (cache-unfriendly; use `ArrayList`)
- `ArrayList` or `HashMap` created without an initial capacity when size is known
- `contains()` on a `List` in a loop — O(n²); use a `HashSet` for O(1) lookup

### Threading
- `synchronized` on an entire method — flag if the critical section is small
- `new Thread(...)` created directly — recommend `ExecutorService` or `@Async`
- Shared `HashMap` — recommend `ConcurrentHashMap`
- Java 21+: `synchronized` inside virtual-thread code — pinning risk; recommend `ReentrantLock`

### Transaction Scope
- `@Transactional` without `readOnly = true` on read-only service methods
- HTTP calls, file I/O, or `Thread.sleep()` inside a `@Transactional` method

## Step 3 — Output

```
## Performance Scan — [scope]

🔴 HIGH    [count]   (likely production impact)
🟡 MEDIUM  [count]   (noticeable under load)
🔵 LOW     [count]   (minor optimisation)

### Findings

[For each finding:]
[Severity] [Category] — [ClassName]:[line]
Problem: [one sentence + estimated impact]
Fix:
  Before: [code]
  After:  [code]

### Top 3 Impact Actions
1. [highest gain fix]
2. [second]
3. [third]
```

## Step 4 — Next Steps

- For a full performance deep-dive → use the `java-performance-reviewer` agent
- For JPA-specific issues → run `/java-jpa`
- To measure real hotspots → enable Hibernate stats: `spring.jpa.properties.hibernate.generate_statistics=true`
- For production profiling → Spring Boot Actuator + Micrometer: `/actuator/metrics`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.