3

Transferrable Objectを使用して、HTML5canvasから Web Worker に画像データを繰り返し渡しています-

要約コード:

var worker = new Worker("test.js");
setInterval(function () {
    var data = context.getImageData(0, 0, canvas.width, canvas.height);

    worker.webkitPostMessage(data, [data]);
}, 100);

問題は、メモリ使用量が数秒ごとに天文学的に増加し、関数が呼び出されていないときは減少しないように見えることです。メモリ使用量が特定のしきい値を超えた場合、このリークの結果として chrome が実際にクラッシュします。Web Worker にデータを送信するための代替方法を含め、あらゆる提案を歓迎します。どうもありがとう!

4

1 に答える 1

0

まあ、それはウェブワーカーの問題ではないと思います。

var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

setInterval(function () {
  var data = context.getImageData(0, 0, canvas.width, canvas.height);
}, 100);

このコードは、同じメモリリークを提供すると思います。また、私はこの問題を発見しました:

  1. http://code.google.com/p/chromium/issues/detail?id=51171
  2. キャンバスの JavaScript メモリの問題
于 2012-08-25T04:01:36.677 に答える