JVM 内存热点常见原因包括五类:
- 对象创建过于频繁:大量短生命周期对象频繁创建销毁,引发 GC 频繁工作。可考虑对象池或减少不必要的实例化。
- 大对象分配:大对象通常直接分配到老年代,多个大对象会迅速填满老年代触发 Full GC。
- 内存泄漏:如静态集合类持有外部引用、未关闭的数据库连接等。堆内泄漏可用 jmap 分析堆快照;堆外泄漏可用 NMT(Native Memory Tracking)。
- 不合理的堆大小设置:
-Xms/-Xmx过低导致频繁 GC,过高浪费物理内存。建议堆约占总内存 1/2,另 1/2 留给非堆。 - 加载过多 class:Metaspace(JDK 1.8+)用尽,需通过
-XX:MaxMetaspaceSize调整。




