我有一个使用PhoneGap / JQuery Mobile开发的应用程序,通过Ajax从服务器获取数据并将其显示为列表。每次Ajax获取数据时,应用程序占用的内存会增加约10 MB。对于第一次获取数据,这可能还可以接受,因为它会获取大量记录(约700条)。然而,在后续调用中,我的理解是它应该重用内存,而不是每次堆积另外10 MB。我已经使用了.off()来释放事件处理程序,以防它们占用内存,但没有成功。
以下是主页面Div,其中显示输出:
以下是从服务器获取数据并在上述div中显示的JavaScript代码。
以下是主页面Div,其中显示输出:
<div data-role="content" class="MainContent" style="overflow:hidden; padding-top: 0px;">
<ul data-divider-theme="b" data-role="listview" data-inset="true" class="MainMenu">
</ul>
以下是从服务器获取数据并在上述div中显示的JavaScript代码。
AjaxFile = "mydomai.com/ajax.php";
$.get(AjaxFile, function (AjaxData) {
$( ".PL" ).off();
$(".MainMenu").off();
$(".MainContent").off();
AjaxData = '<li class="MainMenuList" data-role=list-divider>' + gTitle + AjaxData;
$(".MainMenu").empty();
$(".MainMenu").html(AjaxData);
$(".MainMenu").listview('refresh');
window.scrollTo(0, 0);
$.mobile.loading('hide');
HighlightRow(gCurrentFile);
$(document).ready(function () {
$(".PL").click(function () {
if ( !$(this).hasClass("BTitleRow") )
{
$(".PL").removeClass("RowHighlight");
$(this).addClass("RowHighlight");
OpenNewLink($(this).attr('name'));
}
});
});
});
AjaxData = null;
return;
如何释放内存并确保重复使用相同的内存而不是堆积更多的内存?
更新
即使我删除下面的部分,我仍然可以看到内存使用量不断上升:
$(document).ready(function () {
$(".PL").click(function () {
if ( !$(this).hasClass("BTitleRow") )
{
$(".PL").removeClass("RowHighlight");
$(this).addClass("RowHighlight");
OpenNewLink($(this).attr('name'));
}
});
});
似乎在Ajax以及listview("refresh")中存在某种内存泄漏问题。