Guava内存泄漏分析

282 阅读1分钟

主端内存泄露排查

发生时间

2021.3.29,运维反馈主端几个接口499增多。

问题排查

排查几个接口,内部无远程调用,纯内存解析,排除下游接口超时导致。

登录机器发现:

老年代已经被打满,gc停顿导致接口超时

falcon jvm监控发现:老年代从15日开始持续上涨。

问题解决

先重启机器,留一台问题机器排查,dump内存快照,分析内存泄露点。

内存泄露分析

Mat分析发现,guava缓存占用内存3g,具体业务代码是天气接口缓存,此处业务缓存了用户的经纬度作key,使用了refreshAfterWrite缓存失效策略,缓存没有更新的话,key和value一直存在内存,不会过期,用户经纬度每6米变一次,命中率低,导致部分缓存没有失效,最终导致老年代持续上升,最终oom。