В моем текущем проекте я заметил, что IE использует довольно много памяти. Потратив некоторое время на изучение, я обнаружил, что изображения не удаляются из памяти, но мой сайт использует изображения довольно агрессивно.
Наконец, я создал простой тест, который динамически загружает изображения, а затем очищает его с помощью 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 использует 20 МБ, после добавления изображений - 35 МБ, после очистки - 30 МБ.
Я использовал инструмент SIEve, чтобы найти любой ключ, но он не показывал никаких утечек.
Кеширует ли IE как-то изображения? Есть ли какие-либо проблемы в IE для обработки динамически создаваемых элементов изображения?
Обновление
В Firefox уровень памяти остается постоянным, но в IE он увеличивается.