我有一個簡單的html/javascript代碼,它會創建一些DOM然後刪除它們。這個簡單的js代碼是否有內存泄漏?
<!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
按鈕。當我點擊創建按鈕時,它會將10000 li
元素附加到容器div上,當我點擊清除按鈕時,它將刪除它們。
當我在chrome上試用它時,chrome進程的初始內存使用量約爲30M,在我多次點擊創建按鈕後增長到70M,當我點擊清除按鈕時,它變爲50M。它比最初的要多20M。
然後我在IE8上試用它,IE進程初始內存使用量約30M,點擊創建按鈕一次後增長到100M以上,當我點擊清除按鈕時,它變爲80M。它比最初的多50M。
代碼是否有內存泄漏?如何解決它?
你莫名其妙地測量實際數據使用或者是你測量(更可能)的內存保留,這會比實際使用的數據嗎? – kainaw 2013-03-09 15:41:44
這裏有一個[小提琴](http://jsfiddle.net/3SX59/)看到它在行動。 – insertusernamehere 2013-03-09 15:43:08