以下是非常大的邏輯的一部分,功能軌道僅僅是爲了簡化。跟蹤從數據庫加載對象並存儲在緩存中。以下代碼是否會導致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