- 查找tomcat进程号(本文的tomcat进程号是21069,下面不会再重复)
输入命令:ps -ef|grep tomcat
- 使用jmap来查看jvm的堆的快照
输入命令:jmap -histo 21069 | more
从上面图中可以观察到apache的包占用太多,可以看到sheettml,这个可以猜测出是excel的问题,然后联想到系统有excel导入的功能,最好检查了一下代码,发现代码中的Workbook没有关闭
然后绿色代码进行修复,
然后继续排查其他的代码
图中可以看到EmployeeRate这个对象有75997个实例,占用了9119640的内存
最后发现定时器中,这个类的对象使用比较多,每次new出来的对象没有主动去释放,所以需要业务逻辑处理完之后,手动释放