典型问题与解决方案
1. GC频繁导致停顿
根因:年轻代过小导致对象过早晋升老年代 优化:启用分代ZGC(Generational ZGC),区分新旧对象回收:
|
|
2. 线程阻塞瓶颈
根因:synchronized
锁竞争或数据库连接池不足
优化:
- 用虚拟线程减少锁竞争
- 调整连接池参数(如HikariCP的
maximumPoolSize
)
3. 内存泄漏定位
使用jmap
和jstack
分析堆栈:
|
|
调优原则
- 二八法则:80%的性能问题由20%的代码导致,优先优化热点代码
- 避免过度优化:调优后需验证是否引入新问题(如CPU占用过高)