在我目前的项目中,我注意到IE使用了相当多的内存。花了一些时间调查,我发现图像不会从内存中删除,但我的网站使用图像相当强烈。IE8图像缓存或错误?
最后我创建了一个简单的测试,使用jQuery的
我的测试JS动态加载的图像,然后将其清除:
$(document).ready(function() {
$('#appendImages').click(append);
$('#removeImages').click(remove);
});
function append() {
$.post("http://localhost/TestService/GetImages", { key: $('#key').val()}, function (data) {
$.each(data.Data.items, function (i, v) {
$('#imagesContainer').append('<img src="' + v.imageUrl + '" />');
}); ;
});
}
function remove() {
$('#imagesContainer').empty();
}
HTML测试:
<input id="key" type="text" value="jeans" >
<div id="reset">Reset</div>
<div id="repeatableReset">Repeatable Reset</div>
<div id="stop">Stop</div>
<br />
<br />
<br />
<br />
<div id="appendImages">append</div>
<div id="removeImages">remove</div>
<div id="imagesContainer"></div>
<html>
</html>
虽然追加新图像IE内存正在增加。但是当我删除所有加载的图像后,内存不会被清除。例如,在页面加载后,IE进程使用20MB,添加图像后使用35MB,清除后为30MB。
我用sIEve工具找到任何leand,但它显示没有泄漏。 IE以某种方式缓存图像吗? IE中是否存在处理动态创建的图像元素的问题?
更新 在Firefox的内存水平保持不变,但在IE它正在增加。
最大内存上限是我们的网站350MB。请纠正我,如果我错了,但这是相当多的。大多数网站没有达到100MB的限制。 – lostaman 2010-11-10 23:45:29
@lostaman - 是的,这是非常大的。我真的不确定你会如何解决内存问题,除非你使用no cache meta标签来不缓存任何东西。你知道其他浏览器的内存使用情况吗?这会很方便 - 如果是IE问题或代码问题,这很明显。 – Bojangles 2010-11-11 00:20:32
发现有趣的事情。如果我打开Google网站并尝试密集使用实例搜索(不刷新页面),则IE中的内存级别正在增加。我设法达到了200MB的水平,只是输入不同的组合。在Firefox中,一切都可以找到。如果ajax组件被大量使用,它可能只是IE以某种方式缓存内容。 – lostaman 2010-11-12 13:18:19