2010-12-29 14 views
0

Ich entwickle eine Anwendung, die 600-700 KB von XML-Daten vom Server empfängt. Ich muss einige Manipulationen in diesen Daten vornehmen, so dass die Speicherkapazität nach Erhalt der Daten auf 600 KB bis 2 MB erhöht wird. Bereits in der Anwendung belegt 4 MB Speicher. Während also die XML-Datenverarbeitung I eine gewisse Manipulation tue (Pre-Parsing) und die Speicher erhöht sich auf 600 K.B bis 2 M. B und schließlich sinkt auf 600 K.B. Aufgrund der Speichererweiterung gibt die Anwendung die Speicherwarnung aus. Beim Abrufen der Speicherwarnung werden alle Ansichten im Navigationscontroller freigegeben, es werden jedoch nur 1 MB Speicher freigegeben. Obwohl ich alle Ansichten freigebe, stürzt die Anwendung ab. Bitte helfen Sie mir in dieser Ausgabe. Es passiert in iPad 4.2.Speicherproblem iPad 4.2 Abstürze

Vielen Dank im Voraus

+1

Mit 6-7 MB Speicher nicht wie genug klingt, um Ihre Anwendung zum Absturz zu bringen. Haben Sie bestätigt, dass die Ursache für den Absturz in Ihrer App nicht mehr vorhanden ist (siehe Absturzprotokoll)? –

+0

ya Ich habe das überprüft. Es passiert nur in iPad 4.2, die Multitasking-Funktionalität hat. Wenn ich die Anzahl der Anwendungen im Hintergrund reduziere. Meine Bewerbung funktioniert gut. –

Antwort

1

Es gibt keine magische hier Antwort. Sie verwenden zu viel Speicher und Sie müssen herausfinden, wie Sie weniger verwenden. Ohne mehr über Ihre Anwendung zu wissen, ist es schwierig, spezifisch zu sein, obwohl das Laden von nahezu 1MB Daten und das Herumspielen nicht hilft.

Vielleicht können Sie den Datenstrom anstatt sie alle in den Speicher zu laden? Es gibt eine Open-Source-Bibliothek, die hilft: StreamingXMLParser.

Auch Ihre Ansicht klingt riesig (über ein Megabyte!). Ich bin mir sicher, dass dort einige Optimierungen durchgeführt werden können. Verwenden Sie Instrumente, um zu sehen, wo Ihr Speicher verwendet wird.

+0

Eigentlich lade ich die Daten im fünften View-Controller. Ich verwende den Navigationscontroller, um die View-Controller zu laden. Ich kann Daten nicht durch Streaming analysieren, weil ich viele Sonderzeichen in den empfangenen Daten ersetzen muss. Meine Frage ist, wie die anderen Anwendungen perfekt funktionieren. Sie benötigen nicht so viel Speicher, um die Anwendung auszuführen? –

+0

Wir können nicht sagen, basierend auf dem, was Sie uns gesagt haben. Wenn Ihre App für die Verwendung zu viel Speicher ausgeworfen wird, müssen Sie eine Möglichkeit finden, weniger zu verwenden. Was die anderen Apps machen, ist irrelevant. Sie müssen Ihre App messen (profilieren), um herauszufinden, wo der Speicher verwendet wird, sicherstellen, dass Speicher freigegeben wird, wenn Sie denken, und wo Sie viel verwenden. –

0

Vielleicht nur 1MB wegen eines Parameterwert freigegeben, die verändert werden können, oder Sie können manuell eine Speicherbereinigungsoperation während der Entwicklung Sitzung, falls relevant für die verwendete Sprache beginnen müssen. Sie könnten die XML-Eingabe nach Möglichkeit segmentieren oder Sie könnten [Ihre eigene] Komprimierung oder Komprimierung der XML-Datei aufrufen, wenn Sie Zugriff auf das Skript oder den Code haben, so dass dies möglich ist.