以下是非常大的逻辑的一部分,功能轨道仅仅是为了简化。跟踪从数据库加载对象并存储在缓存中。以下代码是否会导致JavaScript中的内存泄漏?
var cache = [];
function newObject(a){
var b = {};
b.tracker = a;
cache.push(b);
}
var t = {};
track(t);
track(t);
track(t);
track(t);
...
cache.length = 0;
track(t);
track(t);
track(t);
track(t);
....
cache.length = 0;
清除缓存后,它是否会导致内存泄漏,因为b.tracker持有对t的引用?为了澄清,跟踪器t不存储对创建的任何对象的引用。
我需要以下方法吗?
for(var i=0;i<cache.length;i++){
cache[i].tracker = null;
}
cache.length = 0;
或者JavaScript引擎足够聪明,可以移除b的所有实例,因为没有任何body引用b了?
不是downvoter,但我只能假设你正在得到downvotes,因为你还没有表明,如果你甚至已经测试了代码,或不知道它是否会导致内存泄漏。你有效地说,“这是一些代码,为我测试。” – LittleBobbyTables 2013-05-06 12:25:41
那么没有办法来测试这个,我已经创建了1000个对象,但对象几乎没有任何大小可以看到Chrome的内存管理中的任何明显差异。 – 2013-05-06 12:26:50