据我所知,目前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