跳到主要内容
CNode

求大神支援,调试out of memory的技巧

问答
Ccaptainblue2013发布于 12 年前最后回复 12 年前
1063100

OOM一直找不到原因,求大神帮助

查看回复

回复 (10)

B
blankland#912 年前

内存泄漏也有可能是闭包引起的,详情参考这篇文章 http://mrale.ph/blog/2012/09/23/grokking-v8-closures-for-fun.html 大概是说同一级的闭包共享一个Context,返回的闭包通过Context间接引用了其他upvalue,可能导致内存泄漏。

W
wenbob#712 年前

这个太难了,可能是自己代码泄的,也可能是第三方库泄的,还可能是node自身BUG泄的,定位很难。我的解决办法是: 1、把代码尽量放在子进程里做,执行完毕子进程就结束了,不怕泄露,从根子上消除麻烦。 2、定期重启,在内存溢出之前,有计划的、体面的自我了断 3、某些有泄露嫌疑,但又必须长期运行的重要模块,用D语言重写一下,辛苦一次,消灭尾巴

C
captainblue2013#612 年前
引用 leapon贴下 log 吧

@leapon log就是打印了 out of memory

C
captainblue2013#512 年前
引用 MiguelValentine用BUFFER写需要内存的模块,或者你本来就有闭包内存溢出。

@MiguelValentine 问题是我找不出是哪个东西用的内存多,是socket.io吗?用户刷新以后,之前的实例不会被立即回收?

M
MiguelValentine#412 年前

用BUFFER写需要内存的模块,或者你本来就有闭包内存溢出。

L
leapon#312 年前

贴下 log 吧

C
captainblue2013#212 年前
S
shanelau#112 年前

。。。代码呢 这样子 怎么给你看

参与回复

登录后即可参与回复。登录