我有一个简单的循环来创建和销毁(希望)空对象: http://jsfiddle.net/TgWze/
function Test()
{
}
function generate()
{
for(var i = 0; 1000 > i; ++i)
{
var view = new Test();
delete view;
}
}
如果我一直点击链接,Chrome / Safari中的内存配置文件会显示内存泄漏行为: http://cl.ly/BnCV
我错过了什么吗?
答案 0 :(得分:3)
这是托管记忆。因此,当垃圾收集器运行时,它将在某个时刻收集已删除的对象。删除对象实际上没有做任何事情。但是,因为视图永远不会被引用,所以应该很容易收集它。
答案 1 :(得分:3)
这看起来像普通的GC行为。一旦有太多物体,GC就会清理它们。
如果每个峰值之后的谷(在GC运行之后)逐渐变高,那只会是内存泄漏,这表明GC没有捕获所有内容。
答案 2 :(得分:0)
该代码不泄漏。
为了说服自己,你可以拍摄内存的快照并在之前和之后进行比较。请查看我编写的本指南,了解更多详情:http://www.vladalexandruionescu.com/2012/08/javascript-memory-leaks.html。