使用jquery增加内存使用量

时间:2011-12-20 14:58:05

标签: jquery debugging iframe memory-management memory-leaks

我正在开发一个大量使用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>

1 个答案:

答案 0 :(得分:0)

尝试以下一项或多项: