2

requestAnimationFrame を使用して処理中の画像を継続的に更新しながら、Dart で画像処理を行いたいと考えています。次のコードは、Dartium でタブがクラッシュするまでメモリ リークします。

import 'dart:html';
import 'dart:async';

final CanvasElement m_canvas = querySelector("#canvas");

void main() {
  scheduleMicrotask(requestRedraw);
}

void requestRedraw() {
  if(true)
  {
    window.requestAnimationFrame(draw);
  }
}

void draw(num _) {
  var context = m_canvas.context2D;
  context.clearRect(0, 0, m_canvas.width, m_canvas.height);
  var imageData = context.getImageData(0, 0, m_canvas.width, m_canvas.height);
  requestRedraw();
}

各描画呼び出しが完了すると、imageData var は明らかに範囲外になりますが、保持しているメモリは決して解放されません。この行をコメントアウトすると、コードが正常に実行され、60 fps で更新されます。このメモリ リークは現在の dart 実装のバグですか、それとも何か間違っていますか?

4

1 に答える 1