OOM一直找不到原因,求大神帮助
10 回复
这个太难了,可能是自己代码泄的,也可能是第三方库泄的,还可能是node自身BUG泄的,定位很难。我的解决办法是: 1、把代码尽量放在子进程里做,执行完毕子进程就结束了,不怕泄露,从根子上消除麻烦。 2、定期重启,在内存溢出之前,有计划的、体面的自我了断 3、某些有泄露嫌疑,但又必须长期运行的重要模块,用D语言重写一下,辛苦一次,消灭尾巴
内存泄漏也有可能是闭包引起的,详情参考这篇文章 http://mrale.ph/blog/2012/09/23/grokking-v8-closures-for-fun.html 大概是说同一级的闭包共享一个Context,返回的闭包通过Context间接引用了其他upvalue,可能导致内存泄漏。