由於在JavaScript腳本中使用'new Image()',導致內存泄漏。如果我看在Windows資源監視器中使用的物理內存,我得到當我加載的頁面使用的內存的預期增加,因爲它使用如下加載一些比較大的圖片:使用新圖像時在javascript中的內存泄漏()
var imgObjs = [];
// in for loop i = 0, 1, 2...
imgObjs[i] = new Image();
imgObjs[i].onload = function(event) {
// image loaded
}
imgObjs[this.img_src].src = this.img_src;
我會雖然當頁面被導航離開這將自動銷燬引用並釋放內存,但這似乎並不是這種情況。相反,我導航離開,然後返回到頁面,只是找到內存斜坡,因爲它再次加載圖像,而沒有釋放先前分配的內存。我已經嘗試通過將代碼放入卸載事件來手動刪除引用來完成此操作,但它似乎沒有任何區別。這些變量最初都是用'var'聲明的:
// allow garbage collection by removing references
$(window).unload(function() {
for(var i in imgObjs) {
imgObjs[i] = null;
delete imgObjs[i];
}
delete imgObjs
// delete other variables that reference the images
});
沒有人有任何指向我在哪裏出錯的地方嗎?我想這個問題可能是循環引用做,因爲我已經建立了一個列表類,其中每個項目包含一個和下一個圖像的引用,但我已經deeted這些如下:
delete galleries[i].pictures.Items[j].prev;
delete galleries[i].pictures.Items[j].next;
可能重複[Javascript + IMG tags =內存泄漏。有沒有更好的方法來做到這一點?](http:// stackoverflow。問題/ 336348/javascript-img-tags-memory-leak-is-there-a-better-way-to-do-this) – bzlm
你在這裏提出了五個問題,從不接受一個作爲最佳答案。請解決這個問題,否則人們會開始忽略你的問題。 – jfriend00
沒有意識到這是它的工作原理。我現在要做。 – Grub