最近项目在做压力测试得时候,发现性能快速劣化,tps很低,到最后系统挂死。
通过查看cpu情况,发现cpu占用非常高,找到暂用cpu的线程是gc线程
同时查看系统内存gc情况,发现频繁gc,并且内存不能够回收,
明显是有了内存泄漏的现象,再dump内存工具,发现com.alibaba.fastjson.util.IdentityHashMap产生了大量
org.springframework.core.ResolvableType
通过分析代码
主要原因是IdentityHashMap 使用 System.identityHashCode作为key,而没有使用 ResolvableType的hash值
主要的出现场景就是json解析的时候,采用了泛型类,泛型类又没有直接指定具体的类型