在Safari和Firefox 5(未经测试的其他浏览器)中运行以下脚本时,两种浏览器的内存使用量急剧增加。但是在功能完成后,内存使用量仍然非常高。 Safaris内存使用量增长约80MB,FF最高可达200MB。
任何想法为什么,即使在几分钟后,内存使用量也不会减少?
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
window.onhashchange = function() {
var i = 1; // do something
};
function leakIt() {
for(var i = 0; i < 10000; i++) {
window.location.hash = i%4; // Trigger onhashchange
}
};
window.onload = function() {
document.getElementById('leak').addEventListener('click', leakIt,false);
};
</script>
</head>
<body>
<button id="leak">Leak it!</button>
</body>
</html>
其他信息
如果我在Safari中重新加载页面并再次调用leakIt
函数,则内存增加约20MB,在leakIt
终止后,内存使用量将恢复到第一次调用{之后的数量{1}}。