我有两个单身: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,因此限制内存使用非常重要。
问题在哪里?我如何优化代码,重构?以这种方式使用单身人士是否聪明?
在FFX”,并内存使用情况下去你从承载这些内容的页面导航离去后? – DashK 2010-09-23 09:26:46
不,如果我刷新页面,内存几乎相同的大小,没有变化。它看起来像记忆保存所有的对象。 – podeig 2010-09-23 09:34:11