2010-09-23 24 views
2

我有两个单身:JavaScript/jQuery中的内存泄漏在哪里?

搜索 - 执行搜索功能

主题 - 主题(搜索结果)

var Search = new function() { 

    this.GetTopics = function() { 

     var query = $("#globalSearch").val(); 

     $.ajax({ 
      url: 'Search/GetTopics', 
      dataType: 'json', 
      data: { query: query }, 
      success: function (result) { 

       var links = $("<ul />") 
          .click(function (event) { 
           Search.OpenTopicContent(event); 
          }); 

       $.each(result.Topics, function (key, value) { 
        links.append(
         Topic.FormatTopic(value.Name, value.Id, value.Rank) 
        ); 
       }); 

       $("#searchResult").empty(); 
       $("#searchResult").html(links); 
     } 
    } 

}(); 

这是主题单的介绍:

var Topic = new function() { 

    this.FormatTopic = function (name, id, rank) { 

     var li = $("<li />") 
      .attr("id", id) 
      .addClass("{rank:" + rank + "}") 

     var topicName = $("<p />") 
      .append(name) 
      .addClass("tName"); 

     return li.append(topicName); 
    } 

}(); 

这里是电话

$("#searchButton").click(function() { Search.GetTopics() }); 

因此,Search.GetTopics()必须格式化主题列表并将它们呈现在div #searchResult中。

的主题数量可以100左右

问题是每个搜索调用增加内存使用1-3Mb。它发生在IE8和Firefox中。

这是一个带有长时间运行脚本的RIA,因此限制内存使用非常重要。

问题在哪里?我如何优化代码,重构?以这种方式使用单身人士是否聪明?

+0

在FFX”,并内存使用情况下去你从承载这些内容的页面导航离去后? – DashK 2010-09-23 09:26:46

+0

不,如果我刷新页面,内存几乎相同的大小,没有变化。它看起来像记忆保存所有的对象。 – podeig 2010-09-23 09:34:11

回答