我正在使用socket.io编写一个应用程序来向连接的浏览器发送数据,并且特别发现了IE9的问题。 IE8可以很好地处理这个问题,IE 10和其他浏览器也可以很好地管理这个,除了firefox之外它是垃圾清理但允许内存在到达它之前增长很多。但随着IE 9内存的增长和增长,直到系统内存不足。我的测试用例非常基础,如下:
使用socket.io的节点应用程序运行以下代码:
setInterval(function(){
socket.emit('test', 'Hello I am a memory leak in IE9');
},10);
客户端代码如下:
socket.on('test', function(data) {
data = null;
});
以10毫秒的间隔运行只是为了显示这一点,另一种方法是发送一个非常大的字符串。无论哪种方式,只有IE9才会泄漏。我已经在socket.io flashsocket上使用IE8和IE9测试并使用长轮询,IE9在两个实例中都有泄漏,IE8没有。
我知道有人会对不使用IE< 10,遗憾的是,这是项目的要求。
我的问题是,这是Socket.io的某种问题,还是IE9的问题?我可以在代码中做些什么来减轻内存泄漏或初始化更好的GC?