【发布时间】:2019-01-30 01:25:07
【问题描述】:
我们通过 websocket 将二进制数据从我们的服务器传输到 web 浏览器。 浏览器接收数据就好了;我们可以用 Javascript 来操作它。
代码是很基础的:
function WebSocketTest()
{
if ("WebSocket" in window)
{
var ws = new WebSocket("ws://localhost:3456/someresource");
......
ws.onmessage = function (evt)
{
//var received_msg = evt.data;
//var reader = new window.FileReader();
//...........
};
..............................................
..............................................
问题是——即使是这种最简单的形式(onmessage 函数都是空的,所以我们对 evt.data,它是一个二进制 blob 什么都不做),Chrome 浏览器的内存使用量一直在增长,好像垃圾收集器永远不会释放斑点。它会永远增长,直到 Chrome 关闭 websocket 连接或崩溃。我们尝试使用各种方法手动释放 evt.data,但没有任何帮助。您可能希望上面的代码不会导致 Chrome 中的内存泄漏,对吗?如何释放evt.data引用的blob?
【问题讨论】:
-
请不要发布已注释或未注释的点序列,而不是实际代码。请花时间设计和实施the exact shortest code sample that reproduces your problem。
-
什么?考虑不存在的点序列。问题只发生在您看到的代码上,没有其他问题。
-
哦,我明白了。抱歉,请去掉这些点并合上你的花括号。请阅读我发布的链接,你永远不会知道。
标签: websocket