postMessage webworker内存泄漏
postMessage webworker memory leak
我使用webworker以10毫秒的间隔传递一些数据。在任务管理器中,我可以看到工作记忆集增加,直到我不取消间隔。
我是这样做的:
发送:function send() {
setInterval(function() {
const data = {
array1: get100Arrays(),
array2: get500Arrays()
};
let json = JSON.stringify( data );
let arbfr = str2ab (json);
worker.postMessage(arbfr, [arbfr]);
}, 10);
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
我也试着只做这个,但是没有成功:
// let json = JSON.stringify( data );
// let arbfr = str2ab(json);
worker.postMessage(data);
有人知道为什么这个可能会泄漏吗?我目前正在Chrome上尝试这个。
通常在主线程和工作线程之间多次传递值时会产生内存泄漏。
如果可能的话,尽量只将数组发送给web worker一次。
你也可以检测你的Transferable Objects是否正常工作(数组将被中性化)
var ab = new ArrayBuffer(1);
try {
worker.postMessage(ab, [ab]);
if (ab.byteLength) {
console.log('TRANSFERABLE OBJECTS are not supported in your browser!');
}
else {
console.log('USING TRANSFERABLE OBJECTS');
}
}
catch(e) {
console.log('TRANSFERABLE OBJECTS are not supported in your browser!');
}
相关文章:
- 重复应用 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上下文泄漏内存
- 为什么我的数字时钟功能泄漏内存