Um zu beginnen, danke für die Zeit nehmen, um über meine Frage zu sehen. Ich habe momentan Probleme mit dem Speicher-Spiking in der Anwendung, die ich entwickle.Android Speicher Spiking
Meine Absicht ist, in der Lage zu sein, große Mengen von HTML-Daten zu downloaden und zu verarbeiten, derzeit ist die Ursache von großen Base64-kodierten Bildern im HTML verschachtelt, die ich nicht für die Verwendung auf einer mobilen Plattform ideal verstehe. Für den Rekord, teste ich gerade auf einem Samsung Galaxy S. Auch dieses Problem tritt nicht auf dem Galaxy Nexus wegen mehr Speicherzuweisung pro Anwendung auftreten.
Mein Problem ist, dass während der Verarbeitung eines großen Chunks von HTML-Daten von ca. 2,8 MB, der Speicher-Heap auf 27-29 MB erhöht, aber der zugewiesene Speicher nie überschreitet 18-19 MB. Wenn der HTML-Code verarbeitet, gespeichert und angezeigt wurde, kehrt der zugewiesene Speicher zu ca. 3-4 MB zurück. Wenn ich dann diesen HTML-Code erneut herunterladen und verarbeiten soll, wiederholt sich der Vorgang und ich bekomme den gleichen Speicherverbrauch, nur dass es scheint, den Heap weiter zu erhöhen (was mir nicht notwendig erscheint), an dieser Stelle bekomme ich einen Out of memory
Fehler.
Wenn ich diesen Fehler erhalte, ist es normalerweise während des Herunterladens des HTML mit HttpGet
oder beim Extrahieren der Daten von der Festplatte mit einem StringBuffer
. Gelegentlich wird es durch eine Bitmap
während einer XML-Inflation verursacht.
Jede Hilfe würde sehr geschätzt werden.
Galaxy S hat 2,3 läuft, oder? Sie vergleichen also Lebkuchen mit ICS. Sie sollten versuchen, nach dem Parsen so gut wie möglich aufzuräumen ... – WarrenFaith
Danke für die Antwort. Das Galaxy S ist 2.3.6. Ich bereite soviel auf, wie ich kann, ich bin nur neugierig, warum der zugewiesene Speicher nie 18 MB überschreitet, aber trotzdem versucht, den Heap zu erweitern ... –
Bitte posten Sie die LogCat-Ausgabe, die für die Garbage Collections und das fehlerhafte Final erzeugt wurde Zuweisung. –