いくつかのDOMを作成してから削除する単純なhtml/javascriptコードがあります。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>Custom Plunker</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<button onclick="create()"> Create </button>
<button onclick="clearContainer()"> Clear </button>
<div id="container"></div>
</body>
</html>
<script>
function create() {
var c = $("#container");
for(var i = 0;i<10000; i++){
c.append("<li>Hellosd fssd f df sdf f f wef ewf we fwe f wef ewf wef ew few f ewf wf ewf wef </li>");
}
}
function clearContainer() {
var c = $("#container");
c.empty();
}
</script>
Create
ボタンとボタンがありClear
ます。作成ボタンをクリックすると、コンテナdivに10000li
要素が追加され、クリアボタンをクリックすると、それらが削除されます。
Chromeで試してみると、Chromeプロセスの初期メモリ使用量は約30Mですが、作成ボタンを数回クリックすると70Mになり、クリアボタンをクリックすると50Mになります。初期値より20M多いです。
次に、IE8で試してみます。IEプロセスの初期メモリ使用量は約30Mですが、作成ボタンを1回クリックすると、100M以上になり、クリアボタンをクリックすると80Mになります。初期値より50M多いです。
コードにメモリリークがありますか?それを修正する方法は?