根据 Chrome 的开发工具,由于某种原因,使用 socket.emit() 后,数据仍在内存中。由于我必须多次使用这行代码,内存使用量不断增加。我在客户端的 JS 代码:
socket.emit('upload',{data: a_very_long_string});
根据 Chrome 的开发工具,由于某种原因,使用 socket.emit() 后,数据仍在内存中。由于我必须多次使用这行代码,内存使用量不断增加。我在客户端的 JS 代码:
socket.emit('upload',{data: a_very_long_string});
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。
这是socket.io的问题。这是因为 websocket 服务器中的内存泄漏。
请参阅此处发布的解决方案: