我有一个简单的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