Angularjs websocket服务内存泄漏
Angularjs websocket service memory leak
在我的项目中,我有一个angular工厂,它将照顾与c++应用程序的websocket连接。
websocket工厂结构:
.factory('SocketFactory', function ($rootScope) {
var factory = {};
factory.connect = function () {
if(factory.ws) { return; }
var ws = new WebSocket('ws://...');
ws.onopen = function () {
console.log('Connection to the App established');
};
ws.onerror = function () {
console.log('Failed to established the connection to the App');
};
ws.onclose = function () {
console.log('Connection to the App closed');
};
ws.onmessage = function (message) {
//do stuff here
};
factory.ws = ws;
};
factory.send = function (msg) {
if(!factory.ws){ return; }
if(factory.ws.readyState === 1) {
factory.ws.send(JSON.stringify(msg));
}
};
return factory;
});
c++应用程序将通过websockets发送图像,它们将显示在画布中,每次收到新图像时都会更新。
一切都很好,但是当我开始向浏览器发送图像时,我注意到在ubuntu的系统资源监视器中,每次ws.onMessage
被触发时,chrome进程使用的内存不断增加+/-5mb(大约)。
我注释了ws.onMessage
内部的代码,只留下事件检测,没有其他任何内容,使用的内存仍然增加,如果我注释整个ws.onMessage
事件,使用的内存保持在正常范围内。
$destroy
来防止这种循环吗? 结果比我想象的更令人困惑。
首先,我没有使用上面所示的websocket服务,而是使用了这个:https://github.com/gdi2290/angular-websocket内存泄漏仍然存在,但我注意到,在画布更新过程中,有一个对imageObj.src
的引用没有被垃圾收集。
Chrome, opera和firefox现在似乎将已使用内存保持在合理的范围内。
相关文章:
- 重复应用 d3 转换导致的内存泄漏
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- jQuery Draggable:内存泄漏
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- 具有并发sse连接的node.js内存泄漏
- 简单对象的Javascript内存泄漏
- WeakMap是否会将我从父/子关系的内存泄漏中拯救出来
- Javascript绘制画布内存泄漏
- 为什么我的svg节点在IE中泄漏内存
- AngularJS指令包装器与Kendo一起泄漏内存
- 经过几次清理尝试后,主干仍在泄漏内存
- 这个js代码如何泄漏内存
- 未处理的postMessage是否泄漏内存
- 动态创建和销毁三.js场景,而不会泄漏内存
- 我的PyV8上下文泄漏内存
- 为什么我的数字时钟功能泄漏内存