我正在开发一个大量使用jquery(UI)的网站,以提供良好的用户体验。对于某些(愚蠢的)原因,该网站的部分内容显示在iframe中,还有一个按钮用于刷新iframe以从服务器获取最新数据。
问题在于,每次刷新iframe时,内存使用量会增加,导致一段时间后出现严重的内存问题(在IE8和9中测试)。但只有在加载jquery库时才会发生这种情况。使用Drip/Sieve时,可以最好地看到此行为。为了更好地理解这个问题,我删除了导致下面两个文件的所有不必要的代码。每次重新加载时,内存使用量增加约800 kb。 (如果要重现,请尝试http://jsbin.com/asamid/7)
我怎样才能防止jquery吞噬我的记忆?有没有办法在重新加载之前手动卸载所有jquery?
index.htm :(见http://jsbin.com/asamid/7/edit#html,live)
<html>
<head>
<title>Memory Leak - Parent</title>
<script type="text/javascript">
function reload() {
var frame = document.getElementById("testFrame");
frame.src = "frame.htm";
}
</script>
</head>
<body>
<a href="javascript:reload()" id="link">reload frame</a>
<iframe id="testFrame" src="frame.htm" />
</body>
</html>
frame.htm :(见http://jsbin.com/ocuval/edit#html,live)
<html>
<head>
<title>Memory Leak - Frame</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<h2>Test Frame</h2>
<div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div>
</body>
</html>