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 実装のバグですか、それとも何か間違っていますか?