为什么在我的简单Javascript websocket应用程序中使用的内存不断增加?
我对Javascript中的websocket有问题。 内存消耗在不断增加,我就是不明白为什么 我的websocket服务器每秒发送大约1KB的数据,看起来消耗的内存也在以同样的速度增长 如果我打开Chrome任务管理器,我可以看到我的选项卡消耗的内存不断增加。Internet Explorer似乎也存在同样的问题 我的代码基于本页中的示例: 这个问题似乎有点类似,但我仍然不明白问题是什么。 我做错了什么 刷新网页确实会释放内存,但必须有另一种方法为什么在我的简单Javascript websocket应用程序中使用的内存不断增加?,javascript,memory-leaks,websocket,Javascript,Memory Leaks,Websocket,我对Javascript中的websocket有问题。 内存消耗在不断增加,我就是不明白为什么 我的websocket服务器每秒发送大约1KB的数据,看起来消耗的内存也在以同样的速度增长 如果我打开Chrome任务管理器,我可以看到我的选项卡消耗的内存不断增加。Internet Explorer似乎也存在同样的问题 我的代码基于本页中的示例: 这个问题似乎有点类似,但我仍然不明白问题是什么。 我做错了什么 刷新网页确实会释放内存,但必须有另一种方法 <!DOCTYPE HTML>
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var systems = {};
function WebSocketTest()
{
if ("WebSocket" in window)
{
// Let us open a web socket
var ws = new WebSocket("ws://192.168.1.1:8081/websocket");
ws.onopen = function()
{
// Web Socket is connected, send data using send()
var subscribe = {};
var request = {};
request["test"] = "1";
subscribe["subscribe"] = request;
ws.send(JSON.stringify(subscribe));
//alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
var obj = JSON.parse(received_msg);
var samples = obj.samples;
delete samples;
delete obj;
delete receieved_msg;
};
ws.onclose = function()
{
// websocket is closed.
alert("Connection is closed...");
};
window.onbeforeunload = function(event) {
socket.close();
};
}
else
{
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
<script>
</script>
</html>
var系统={};
函数WebSocketTest()
{
如果(“窗口中的WebSocket”)
{
//让我们打开一个web套接字
var ws=newwebsocket(“ws://192.168.1.1:8081/WebSocket”);
ws.onopen=函数()
{
//已连接Web套接字,请使用send()发送数据
var subscribe={};
var请求={};
请求[“测试”]=“1”;
订阅[“订阅”]=请求;
send(JSON.stringify(subscribe));
//警报(“消息已发送…”);
};
ws.onmessage=函数(evt)
{
收到的var_msg=evt.data;
var obj=JSON.parse(收到消息);
var样本=obj样本;
删除样本;
删除obj;
删除收到的消息;
};
ws.onclose=function()
{
//websocket已关闭。
警报(“连接已关闭…”);
};
window.onbeforeunload=函数(事件){
socket.close();
};
}
其他的
{
//浏览器不支持WebSocket
警报(“您的浏览器不支持WebSocket!”);
}
}
。省略那些行。(并不是说这会有任何帮助)由于垃圾收集器无法强制执行,您可能需要为那些不超出范围但不再需要的变量将其设置为NULL,而不是使用delete
。我尝试将evt.data、obj、samples和received_msg设置为NULL。很高兴知道怎么做,但问题仍然存在。