Ich habe eine PhoneGap/JQuery MObile App, die Daten vom Server über Ajax abruft und sie als Liste anzeigt. Mit jedem Ajax-Abruf erhöht sich der von App belegte Speicher um ca. 10 MB. Beim ersten Abruf kann es OK sein, da eine große Anzahl von Datensätzen abgerufen wird (ca. 700). Bei späteren Anrufen verstehe ich jedoch, dass der Speicher erneut verwendet werden sollte, anstatt jedes Mal weitere 10 MB zu stapeln. Ich habe .off() verwendet, um Event-Handler freizugeben, falls sie den Speicher halten, aber keinen Erfolg.Speichernutzung in PhoneGap App
Hier ist die Hauptseite Div, wo die Ausgabe angezeigt wird:
<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>
Und das ist der Javascript-Code, der die Daten vom Server und zeigt in der obigen div abruft.
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;
Kann mir bitte jemand sagen, wie kann ich den Speicher frei zu machen und sicherzustellen, dass der gleiche Speicher statt häufen sich mehr und mehr Speicher wiederverwendet wird.
Vielen Dank.
========= UPDATE ===========
Auch wenn ich unten Teil zu entfernen, kann ich immer noch die Speicherauslastung sehen klettern:
Es scheint eine Art von Speicherleck in Ajax sowie Listview ("Refresh"). Kann mir bitte jemand helfen? Danke
Hat Ihre Liste viele Bilder? –
Nein, die Liste enthält keine Symbole. – Anjum
Versuchen Sie in Ihrem jQuery.ajax ({}) "cache: false" hinzuzufügen. BTW, wie berechnen/wissen Sie, dass es rund 10 MB Speicher verwendet? Bcoz ist es neu für mich und ich möchte wissen, danke –