2010-09-23 23 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

回答