飞镖内存泄漏和垃圾收集

时间:2014-01-18 11:25:29

标签: memory-leaks garbage-collection dart

据我所知,目前Dart没有明确的方法从内存中删除对象,并且自动删除不再在任何地方引用的对象。

然而,我一直在运行一些基准测试。这是代码:

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

var components = [];
var times_to_run = 10;

class MockComponent {

  Element element = new Element.html('<table></table>');

  remove() {
    element.remove();
    element = null;
  }

}

createAndRemoveComponents(t) {

  var n = 50000; // number of objects to create and delete in this run

  print("***Run #${times_to_run}");
  print("creating $n objects...");
  for(var i=0; i < n; i++) {
    components.add(new MockComponent());
  }
  print("...done");


  print("removing $n objects...");
  while(components.length > 0) {
    components.removeAt(0).remove();
  }
  print("...done");

  times_to_run -= 1;

  if(times_to_run <= 0) {
    components = null;
    t.cancel();
  }

}

void main() {
  new Timer.periodic(const Duration(seconds: 10), createAndRemoveComponents);
}

我制作了一段关于此代码正在运行的视频,所以请查看并亲自了解内存实际泄漏:http://www.youtube.com/watch?v=uVD8Npvc9vQ

0 个答案:

没有答案