EventEmitter のメモリリークの可能性が検出されました 質問する

EventEmitter のメモリリークの可能性が検出されました 質問する

次の警告が表示されます:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace: 
    at EventEmitter.<anonymous> (events.js:139:15)
    at EventEmitter.<anonymous> (node.js:385:29)
    at Server.<anonymous> (server.js:20:17)
    at Server.emit (events.js:70:17)
    at HTTPParser.onIncoming (http.js:1514:12)
    at HTTPParser.onHeadersComplete (http.js:102:31)
    at Socket.ondata (http.js:1410:22)
    at TCP.onread (net.js:354:27)

server.js に次のようなコードを書きました:

http.createServer(
    function (req, res) { ... }).listen(3013);

これを修正するにはどうすればいいですか?

ベストアンサー1

ここで指摘しておきたいのは、この警告には理由があり、適切な修正方法は制限を増やすことではなく、なぜ同じイベントにこれほど多くのリスナーを追加しているのかを理解することである可能性が高いということです。これほど多くのリスナーが追加される理由がわかっていて、それが本当に必要なことであると確信している場合にのみ、制限を増やしてください。

私はこの警告を受け取ったのでこのページを見つけました。私の場合、使用していたコードにバグがあり、グローバル オブジェクトが EventEmitter に変換されていました。これらの問題に気付かれないままにしたくないので、グローバルに制限を増やすことは絶対にお勧めしません。

おすすめ記事