it-swarm.com.de

Wie kann die Speichernutzung und -leistung mit Instrumenten gemessen werden?

Von allen Instrumenten-Trace-Vorlagen verwende ich gerne:

  • Zombies, um zu erkennen, wo ein Objekt übermäßig freigesetzt wird, ideal zum Debuggen von EXEC_BAD_ACCESS Fehler.
  • Lecks zum Erkennen von Speicherlecks.
  • Kernanimation w Farbüberlagerte Ebenen zum Erkennen der Bildrate und der durchscheinenden Unteransichten, ideal zum Glätten des Bildlaufs UITableView.

Ich höre immer Leute sagen, um die Speichernutzung und Leistung meiner App zu profilieren.

  1. Warum sollte ich die Speichernutzung und -leistung profilieren? Meine App läuft gut.
  2. Wie mache ich es?

Ich habe Allocations verwendet und festgestellt, dass meine iPhone-App bei 1 MB zugewiesenem Gesamtspeicher beginnt und nach normaler Verwendung auf 5 MB anwächst. Was ist eine zu hohe Speichernutzung auf dem iPhone? iPad? Mac?

52
ma11hew28

Um das Warum zu beantworten, ist das Erstellen von Speicherprofilen für iOS-Apps besonders wichtig, da iPhones und iPads viel weniger RAM als Macs haben. Das iPhone 4 hat 512 MB RAM, aber frühere Versionen hatten 256 oder 128 MB. Berücksichtigen Sie den RAM, den das Betriebssystem verwendet, und das Multitasking, und Ihre App hat nicht viel RAM zu verschwenden. Daher ist es wichtig zu wissen, wie viel Speicher Ihre App verwendet.

Die Profilerstellung wird normalerweise durchgeführt, wenn Ihre App langsam ausgeführt wird. Erstellen Sie ein Profil, um die langsamen Stellen in Ihrem Code zu finden, damit Sie den Code schneller ausführen können. Wenn Ihre App einwandfrei läuft, müssen Sie sich für die Leistung nur wenig profilieren.

Verwenden Sie zur Beantwortung der Fragen das Allocations-Instrument, um die Speichernutzung zu messen. In der Spalte Live Bytes in der Kategorie All Allocations sehen Sie, wie viel Speicher Ihre App derzeit verwendet. Die Heap-Shot-Analyse des Allocations-Instruments misst das Speicherwachstum in Ihrer App. Verwenden Sie das Menü auf der linken Seite der Sprungleiste, um eine Heap-Shot-Analyse durchzuführen.

Mit dem Time Profiler-Instrument wird Ihre App auf Leistung überprüft. Der schwierige Teil der Verwendung des Time Profiler-Instruments besteht in der Interpretation der Ergebnisse. Das Time Profiler-Instrument teilt Ihnen nicht mit, dass Ihre App 75% ihrer Zeit in Function X verbringt. Sie müssen die Daten durchsuchen, um die langsamen Stellen in Ihrem Code zu finden.

Die akzeptable Speichernutzung hängt von den zu unterstützenden Geräten und der App ab. Eine App wie Xcode mit 100 MB RAM wäre in Ordnung, aber eine App wie TextEdit mit 100 MB für ein einseitiges Dokument wäre ein Problem. 5 MB sollten für eine iOS-App kein Problem sein.

76
Mark Szymczyk

Um einige der Kommentare in Marks Antwort anzusprechen:

Zuweisungen von Live-Bytes enthalten keinen OpenGL-Texturspeicher, der von CALayer/UIViews verwendet wird. Dies ist die Ursache für die Nichtübereinstimmung mit dem Memory Monitor.

Die Antwort auf diese Frage finden Sie hier: Informationen zum Speicherverbrauch auf dem iPhone

7
Calvin

Der Speicher, der wirklich in den physischen Speicher des Geräts geladen wird, ist der Resident Memory In VM Tracker Instrument.

Allocation Instrument Markiert nur den mit malloc/[NSObject alloc] Erstellten Speicher und einige Framework-Puffer, z. B. dekomprimierte Bildbitmaps sind in Allocation Instrument Nicht enthalten, beanspruchen jedoch immer den größten Teil Ihres Speichers.

Bitte beachten Sie WWDC 2012-Sitzung 242 Leistung der iOS-App: Speicher, um die Informationen von Apple abzurufen.

3
CarmeloS