0

根据 Chrome 的开发工具,由于某种原因,使用 socket.emit() 后,数据仍在内存中。由于我必须多次使用这行代码,内存使用量不断增加。我在客户端的 JS 代码:

socket.emit('upload',{data: a_very_long_string});
4

2 回答 2

0

JS 中的局部变量(用 声明var)在函数返回时自动进行垃圾收集。如果它是一个全局变量,你总是可以通过delete. 所以我想在你的情况下,这是因为一些全局变量没有在emit().

我发现这篇文章谈论的是 Socket.IO 中的内存泄漏,这对您的情况可能会有所帮助。http://jpallen.net/2013/03/08/tracking-down-a-memory-leak-in-node-js-and-socket-io/

关于释放变量,可以参考这个问题:Memory release from local variable in JavaScript

于 2013-04-22T17:04:28.633 回答
0

这是socket.io的问题。这是因为 websocket 服务器中的内存泄漏。

请参阅此处发布的解决方案:

  1. http://jpallen.net/2013/03/08/tracking-down-a-memory-leak-in-node-js-and-socket-io/
  2. https://github.com/LearnBoost/socket.io/issues/1015
于 2013-04-23T04:26:11.440 回答