场景:
每天一次对大文件入库,定时任务+多线程方式
问题描述:
heap内存大致呈阶梯式增长,
新生代/老年代使用率
tomcat进程内存使用率
问题分析
初步定为内存未回收.
根据dump文件查找对应类相关对象进行分析.
线程池也关闭了, 其相关引用的内存只有kb级别.所以内存是可以回收的.
所以代码层面,应该不是代码问题.
而有几百次GC(Allocation Failure),而Full GC只有5次, 查找其中1次,Old Gen回收后降到4%,所以是可以回收的.
因此原因可能是yong区太小导致频繁gc失败,导致内存一直增长.
解决方案
适当调整young区大小