2014-09-02 7 views
5

Ich teste auf einem iPhone 4 mit iOS 7.1 an Xcode 5.1.1 angeschlossen. Ich verstehe nicht, warum ich Gedächtniswarnungen bekomme und stürze sogar, wenn Instrumente zeigen, dass meine App nur ein paar Megabyte benutzt und es reichlich Speicher frei gibt (siehe beigefügt). Irgendwelche Ideen?Warum Speicherwarnungen mit 4 MB Auslastung und 320 MB frei?

Memory Utilization of App while Receiving Warnings

Update:

In Instrumente, wie ich vermutete, fand ich keine Lecks, aber die "Anonymous VM" Größe scheint übermäßig groß und mit Bilddaten gefüllt. Jede Tabellenzelle in meiner App zeigt ein JPEG an. Vielleicht sollte ich diese Bilder vorskalieren, und das ist der Grund für die große anonyme VM-Größe ... Weitere Untersuchungen müssen durchgeführt werden.

Instruments Allocations

+1

Sie könnten viele Lecks haben ... haben Sie dies in Instrumenten überprüft? Führen Sie den statischen Analysator aus? –

+0

Wenn ich viele Lecks hätte, würde das nicht angezeigt werden, wenn der Speicher im Laufe der Zeit wächst (siehe Screenshot)? – davecom

+0

Ich glaube nicht, nein ... Ich könnte mich irren und wenn das so ist, werden andere mich korrigieren. Aber die ganze Idee eines Speicherlecks ist, dass ein Zeiger auf eine Speicheradresse außerhalb des Geltungsbereiches und zerstört wurde, ohne dass dieser Speicher freigegeben wurde, so dass ich intuitiv nicht glaube, dass durchgespuckte Speicher von den Tools als "im Besitz" gezeigt werden "Mit deiner App ... auf jeden Fall, warum nicht einfach nachsehen? Es ist etwas, was wir routinemäßig tun sollten. –

Antwort

3

Es Bilder in UIImageViews in jedem angezeigt stellte sich heraus, und jede Tabellenzelle in ihrer vollen Größe im Speicher abgelegt wurden, nicht die skalierte Größe (Größe des UIImageView) . Dies tauchte nur in der "Anonymous VM" in Instruments auf (da iOS nur Verweise auf Ihre Bilder in Ihrem Anwendungs-Heap speichert und die tatsächlichen Bild-Caches im Systemspeicher liegen), nicht in der Grundspeicherauslastung, die in Xcode angezeigt wird. Ich habe das Problem gelöst, indem ich meine Bilder vorskalierte, bevor ich sie in die UIImageViews der Tabellenansichtszellen legte. Es gab keine Lecks.

Verwandte Themen