为什么在我的简单Javascript websocket应用程序中使用的内存不断增加?

为什么在我的简单Javascript websocket应用程序中使用的内存不断增加?,javascript,memory-leaks,websocket,Javascript,Memory Leaks,Websocket,我对Javascript中的websocket有问题。 内存消耗在不断增加,我就是不明白为什么 我的websocket服务器每秒发送大约1KB的数据,看起来消耗的内存也在以同样的速度增长 如果我打开Chrome任务管理器,我可以看到我的选项卡消耗的内存不断增加。Internet Explorer似乎也存在同样的问题 我的代码基于本页中的示例: 这个问题似乎有点类似,但我仍然不明白问题是什么。 我做错了什么 刷新网页确实会释放内存,但必须有另一种方法 <!DOCTYPE HTML>

我对Javascript中的websocket有问题。 内存消耗在不断增加,我就是不明白为什么

我的websocket服务器每秒发送大约1KB的数据,看起来消耗的内存也在以同样的速度增长

如果我打开Chrome任务管理器,我可以看到我的选项卡消耗的内存不断增加。Internet Explorer似乎也存在同样的问题

我的代码基于本页中的示例:

这个问题似乎有点类似,但我仍然不明白问题是什么。

我做错了什么

刷新网页确实会释放内存,但必须有另一种方法

<!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。很高兴知道怎么做,但问题仍然存在。