内存泄露
今天有幸见识了内存泄露的问题,在此分享一下
项目包括一个功能点:导出专题报告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进程。
今天有幸见识了内存泄露的问题,在此分享一下
项目包括一个功能点:导出专题报告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进程。

本文介绍了一个项目中因Firefox进程未正确管理导致的内存泄露问题。每次项目启动都会自动创建多个Firefox进程,若启动失败则重复创建,最终导致服务器内存耗尽。文章详细描述了解决方案:确保每次启动失败后先销毁旧进程再重新启动。
13万+

被折叠的 条评论
为什么被折叠?



