CNode

emitter.setMaxListeners()的问题

Ffyddaben发布于13 年前最后回复13 年前5 回复14210 浏览0 收藏

我的node版本是最新版本。而且,没有使用event。只是简单的刷新列表页面,出现 warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. data: Trace data: at Socket.EventEmitter.addListener (events.js:160:15) data: at Socket.Readable.on (_stream_readable.js:653:33) data: at Socket.EventEmitter.once (events.js:179:8) data: at TCP.onread (net.js:527:26)

查看回复

回复 (5)

H
hexie#1·13 年前

同问

S
shiedman#2·13 年前

问题的根源是在同一个对象上注册过多的监听函数,例如on(,)这种调用。由于半点相关代码都没贴出来,偶也只能给出一些笼统的提示: 刷新列表对应的函数里面,是否依赖于外部某些对象,是否一直通过on函数注册监听,有没有在适当的地方通过removeAllListeners注销监听。

H
hexie#3·13 年前
引用 shiedman问题的根源是在同一个对象上注册过多的监听函数,例如on(<event ,<callback )这种调用。由于半点相关代码都没贴出来,偶也只能给出一些笼统的提示: 刷新列表对应的函数里面,是否依...

问题比较隐蔽,相对于明显的 on函数,我更多的使用 callback 这种调用,根据你的回复,我得检查一下,消息队列的监听 是不是有不合理的地方。

F
fyddaben#4·13 年前

哪有。。我把所有的监听函数都去掉了,用的callback回调。。还是会有这种情况发生。。

S
shiedman#5·13 年前

既然如此肯定自己的代码没问题,那么就把触发这个警告信息的socket揪出来,setMaxListeners(0)来绕过此警告吧。

PS:callback也有可能与事件监听挂钩的,event是nodejs的核心之一,事件的监听是不可避免的。

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