今天有幸见识了内存泄露的问题,在此分享一下
项目包括一个功能点:导出专题报告word文档,启动firefox,获取图片数据,然后将图片放入专题报告文档。
问题:
后台日志出现:"Low Memory Detector" daemon prio=10 tid=0x00002aab7007d000 nid=0x2910 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE
通过free -m发现,总内存40G的服务器只剩下了700m的内存。执行killall firefox,杀掉所有的firefox进程,再次查看内存,此时内存有4G左右。
看来还是firefox吃的内存比较多
原因:每次启动项目时都会自动启动4个firefox进程,如果启动失败,则继续自动启动4个firefox进程.......这样就会累计数万的firefox。
解决:
启动项目时,如果启动firefox失败,则先销毁失败的firefox进程,再重新启动firefox。从此每次启动项目,ps -ef | grep firefox,只保留4个firefox进程。
版权声明:本文为博主原创文章,未经博主允许不得转载。