【系统背景】
系统采用了springcloud Dalston.SR3版本, springboot为1.5.4.RELEASE版本, 进行微服务的开发及管理。
【问题现象】
应用不定期出现内存占用较高、CPU使用率高,内存占满后一直无法释放。
查询后台日志存在警告日志: WARN o.s.cloud.netflix.metrics.servo.ServoMonitorCache [57]- timerCache is above the warning threshold of 1000 with size 511487
使用jmap -histo pid 命令查看堆内存使用情况,发现大量对象实例未被及时回收(大量对象实例被创建且未及时释放掉)
num #instances #bytes class name
----------------------------------------------
1: 10892148 261411552 java.util.concurrent.atomic.AtomicLong
2: 4082727 108873888 [Ljava.util.concurrent.atomic.AtomicLong;
【逻辑调查】