spring-boot-performance
Spring Boot performance and optimization
This skill covers performance end to end: application-level caching and pooling live in this file; JVM/GC tuning, concurrency/virtual-thread pitfalls, startup-time reduction, and profiling/load-testing methodology each have a dedicated reference loaded on demand so this file stays focused on the everyday cases.
| Working on... | Load |
|---|---|
| Caching, connection pool sizing (the common cases — covered below) | Stay in this file |
| GC pauses, container OOM-kills, heap/memory pressure, JVM flags | references/jvm-and-gc-tuning.md |
spring.threads.virtual.enabled, pinning, ThreadLocal/ScopedValue, @Async/HTTP-client pool sizing |
references/concurrency-and-virtual-threads.md |
| Slow cold start, autoscaling readiness, CDS/CRaC/GraalVM native image | references/startup-and-native-image.md |
| "It's slow" with no clear cause yet — profiling and load-testing methodology | references/profiling-and-load-testing.md |
| N+1 queries, missing indexes, entity-fetch problems | spring-boot-review (not this skill) |
Measure before you tune. Every technique below and in the reference files is worth applying once there's evidence pointing at it — a JVM flag or pool-size change made on intuition rather than a profile/load-test result is how a codebase ends up with tuning that nobody can explain later. See references/profiling-and-load-testing.md for the actual methodology if the starting point is "it's slow" with no more specific diagnosis yet.
Caching — Spring Cache abstraction
@EnableCaching + @Cacheable/@CachePut/@CacheEvict sit in front of a method call via a Spring AOP proxy — swapping the backing store (in-memory, Caffeine, Redis) is a configuration change, not a code change in the service: