リークは非常に簡単に作成できます。下のHTMLを、 "TestImage0.jpg"、 "TestImage1.jpg"、... "TestImage9.jpg"という大きな画像のリストの横に置きます。ページのクリックごとにページがメモリをリークします(私はテストのためにsIEveを使用しました)。サイズ変更CSSが削除された場合、ページはリークしません。誰でもIE8の問題であることを確認できますか、私の実験に欠陥がありますか?これはIE8のメモリリークであることを誰かが確認できますか?
テストコード
<html>
<head>
<title>Memory Leak Testing</title>
<script type="text/javascript">
var count = 0;
window.onload =
function() {
AppendImage();
window.document.body.onclick = ReplaceImage;
}
var ReplaceImage = function() {
window.document.body.removeChild(document.getElementById('MemTestObject' + count));
count++;
if (count > 9) {
alert('No more images to load.');
} else {
AppendImage();
}
}
var AppendImage = function() {
var imageObject = document.createElement('img');
imageObject.id = 'MemTestObject' + count;
imageObject.className = 'MemTestObject';
imageObject.src = 'TestImage' + count + '.jpg';
window.document.body.appendChild(imageObject);
}
</script>
<style type="text/css">
.MemTestObject {
width: 140px;
height: 178px;
}
</style>
</head>
<body>
<h1>Memory Leak Testing</h1>
</body>
</html>
他のブラウザをテストしましたか? –
FF3のメモリフットプリントは、IE8とほぼ同じ速度で増加します。しかし、FF3では、数回のガベージコレクションラウンドを待ってからメモリが解放されます。 IE8は、ページがアンロードされてもメモリを解放しません。 – JoshNaro
一度ページを閉じてもう一度開くと、さらにメモリがリークしますか? – Daemin