Das iPad empfängt eine Speicherwarnung mit geringer Speicherbelegung

8

Ich habe ein UIWebKit mit einem HTML, dieses HTML hat mehrere Bilder und Text, aber nur die Anzeige gibt mir die Speicherwarnung. Also habe ich ein paar Tests gemacht: Dasselbe HTML mit verschiedenen Bildern, voller Größe und nach den gleichen Bildern, aber um 50% von der Originalgröße reduziert, für die um 50% reduzierten Bilder ging ich zur Vorschau und reduzierte alle Bilder in 50%

Der überraschende Teil ist der 50% Test, Sie können sehen, dass sogar bei 16 Bildern der Speicher-Peak 4,90 MB beträgt. Das ist wirklich überraschend. Beachten Sie, dass diese Werte nicht immer gleich sind, sie ändern sich, aber es gibt keinen großen Unterschied zwischen den Tests.

Im 50% -Problem, in den Bildern 8 und 16, obwohl der Speicher niedrig ist, erscheint manchmal eine Speicherwarnung, aber die Leistungsverbesserung ist im Vergleich zu den Bildern in voller Größe bemerkbar

steht still = Speicher nach dem Scrollen aller Artikel

1 Bild = [steht still 5MB] [rotiert 5.6MB]

2 Bilder = [steht still 6.99MB] [rotiert 7.7MB]

3 Bilder = [steht still 9.04MB] [rotiert 10.9MB]

4 Bilder = [Standbild 10.89MB] [rotierend 13.20MB]

8 Bilder = [steht still 23.14MB] [rotiert 25.20MB] (manchmal stürzt ab)

16 Bilder = [steht still 27.14MB und App stürzt ab]

50%

1 Bild = [steht still 3,2 MB] [rotiert 3,67 MB]

2 Image = [steht still 3.2MB] [dreht 3.70MB]

3 Bild = [steht noch 3,3 MB] [dreht 3.79MB]

4 Image = [steht noch 3,3 MB] [rotiert 3.80MB]

8 Bilder = [steht still 4.29MB] [rotiert 4,63MB] (manchmal stürzt ab)

16 Bilder = [steht still 4.79MB] [dreht 4,90MB] (manchmal stürzt ab)

Meine Frage ist: Die App ist manchmal mit 16 kleinen Bildern abgestürzt. Warum? Die Erinnerung war viel niedriger.

Was ist die Grenze des Speicherverbrauchs? Das Maximum schien bei den Bildern mit 50% Größe anders zu sein. 13,2 MB funktionieren für große Bilder und 3,8 für kleine Bilder. Alles Höhere stürzt manchmal ab. Das macht keinen Sinn.

Danke

    
Fer 29.05.2010, 16:58
quelle

1 Antwort

2

Es wäre hilfreich, wenn Sie ein Absturzprotokoll über die Vorgänge veröffentlichen würden, da es sehr wahrscheinlich ist, dass der Absturz nicht so stark mit Ihrem Speicherverbrauch zusammenhängt, wie mit dem Umgang mit diesem Speicher. Ja, Ihre Bildgröße kann das Problem verschlimmern, da die pro Bild verwendete Menge an echtem Speicher nach dieser Formel skaliert wird:

%Vor%

unter der Annahme, dass es sich bei dem Bild um ein 32-Bit-Farbbild handelt, wobei w für die Breite des Bildes in Pixel steht und h für die Höhe des Bildes in Pixel steht. Als Ergebnis wird ein 3224-Bit-Farbbild mit einer Auflösung von 1024x1024 ungefähr 4,2 MB Speicher verwenden, während ein 32-Bit-Farbbild mit 512x512 1-Megabyte verwendet.

Dein Unfallbericht wird es erzählen. Auch das Ausführen von Instrumenten unter dem Werkzeug für Objektzuordnungen und -lecks kann von großer Bedeutung sein (wenn das Seitenfenster sichtbar ist, wird der Aufruf-Stack für alle gefundenen Lecks angezeigt). Beachten Sie auch, wenn Sie Lecks finden, die auf Dinge wie CIOImage oder Ähnliches hinweisen, ist dies der Ort, an dem das Leck schließlich auftritt, aber wo das Leck auftritt, wird fast positiv in Ihrem Code sein.

Denken Sie beim Ausführen von Geräten auch daran, es an die App anzubinden, die auf Ihrem Gerät ausgeführt wird. Nimm in solchen Fällen nichts, was die Sim sagt, auf den Nennwert.

    
jer 22.01.2011 01:50
quelle