【发布时间】:2013-03-09 15:39:27
【问题描述】:
我有一个简单的 html/javascript 代码,它将创建一些 DOM,然后删除它们。
<!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左右,我只点击一次create按钮后就增长到100M以上,点击clear按钮后就变成了80M。比最初多了 50M。
代码是否有内存泄漏?如何解决?
【问题讨论】:
-
您是以某种方式测量实际数据使用量还是测量(更有可能)保留的内存,这将超过实际使用的数据?
-
这里有一个fiddle 来查看它的实际效果。