2012-03-11 60 views
2

我想知道是否有可能从一个HTML页面卸载图像,并释放一些Javascript指令的内存占用。假设图像已经显示在屏幕上。说我需要卸载它来节省内存(原因在这里不相关)。我可以用Javascript做到吗?是Javascript能够从HTML页面卸载图像吗?

+5

您可以删除DOM树的形象,而且从内存的去除仅达浏览器。 – duri 2012-03-11 09:34:49

+1

作为@duri的后续工作,浏览器会最终垃圾收集未使用的资源并释放内存,尽管从用户的角度来看,没有用于该级别控制的API – jlb 2012-03-11 09:43:44

+2

您可能希望制作带有巨大图片的测试用例并观看浏览器内存消耗时删除它。让我知道,浏览器是如何反应的;) – Christoph 2012-03-11 10:07:18

回答

4

对你的问题的意见是正确的,你可以将其删除DOM,但是当浏览器确定它已经准备就绪时,它将从内存中清除它。

从DOM清除它,你会做这样的事情:

var badImage = document.querySelector("img#idOfImage"); 
//or "img[href='nameofimagefile.jpeg']" 
//whatever you need to do to get the right element 
//then, remove it: 

badImage.parentElement.removeChild(badImage); 
1
$('#myDiv').remove(); 

function removeElement(divNum) { 
    var d = document.getElementById('myDiv'); 
    var olddiv = document.getElementById(divNum); 
    d.removeChild(olddiv); 
} 

将从DOM中取出但是它不会释放任何内存,或带宽或HTTP请求......所以在性能方面就没有太大的差异(不考虑渲染)。

但是我相信如果从DOM中删除图像,它使用的内存最终将被浏览器(垃圾收集)管理和删除。

因此,在短期不,我不认为这是从内存中删除,因为这是一个浏览器级别的关注特定的方式..

+0

如果图像没有被移除,它的src属性是否变为空,它是否也会最终收集垃圾? – Firsh 2014-03-20 08:27:31