2
我正在使用webworker以10毫秒的間隔傳遞一些數據。在任務管理器中,我可以看到工作記憶集增加,直到我不取消間隔。postMessage webworker內存泄漏
下面是我在做什麼:
發送:
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上嘗試此操作。
由於工作的性質,它必須非常頻繁地發送。只發送一次使得看到內存變化很難。 – roro
也許您的可傳輸對象無法正常工作。嘗試返回bufView而不是buf並調用worker.postMessage(bufView.buffer,[bufView.buffer]) – Sagi
我嘗試使用您發佈的解決方案來檢查可傳輸對象是否正常工作,並嘗試使用bufView而不是buf。這兩個都沒有阻止內存的增加。 – roro