2010-01-28 10 views
85

Ich benutze das ObjectAlloc-Tool von Instruument, um zu verstehen, was der Speicher meiner Anwendung (iPhone) macht und wann und wo sie es macht.Instruments ObjectAlloc: Erklärung von Live-Bytes und Gesamt-Bytes

ich wie eine grundlegende Erklärung dieser Statistiken wirklich würde:

  • Live-Bytes
  • Leben

  • Transitory

  • Insgesamt Bytes

Wenn ich versuche um herauszufinden, wie viel Speicher meine a Anwendung verwendet, bin ich auf Live Bytes oder Overall Bytes zu schauen? Beinhaltet dies durchgesickerten Speicher? Was sind Übergangsobjekte?

Dank

+6

Spalten haben kurze Beschreibungen, wenn Sie über ihre Header schweben. –

Antwort

109

ObjectAlloc Spuren alle Speicherzuweisung und Freigabe über die Zeit läuft Ihr Programm.

Die Living bytes, or Net bytes ist, wie viel Speicher Ihre Anwendung zum Zeitpunkt der Auswahl in der Timeline verwendet. Dazu gehört auch der ausgelaufene Speicher, da der ausgelaufene Speicher niemals freigegeben wird.

#Living ist, wie viele Zuweisungen einer bestimmten Größe/eines bestimmten Objekttyps passiert sind (und immer noch zugeordnet sind). Dies ist sehr nützlich, wenn nach Lecks gesucht wird.

Zum Beispiel, wenn Sie wiederholt eine Aktion ausführen (wie in einem aus einem Modal-View-Controller kommt), und Sie sehen, dass #Living ein Objekt um den gleichen Betrag wachsen jedes Mal, dann sind Sie wahrscheinlich diese Objekte undicht . Sie können dann bestätigen, indem Sie die genaue Codezeile, die die Objekte zuweist, anzeigen und sehen, wann der jeweilige Zeitindex erstellt wurde.

Overall bytes enthält Speicher, der freigegeben wurde. Es ist hilfreich, diese Zahl zur Leistungsoptimierung zu verfolgen, jedoch nicht, wenn Sie nur versuchen, Ihren aktuellen Speicherbedarf zu ermitteln oder nach Lecks zu suchen.

+3

Was würden Sie in Bezug auf Overall Bytes versuchen zu optimieren? Der Versuch, die Zahl klein zu halten, bedeutet bessere Leistung? –

+4

Ja, richtig. Eine häufige Ursache für Leistungsprobleme ist das versehentliche Ausführen desselben Codes mehrmals. Das Zuordnungswerkzeug kann eine gute Möglichkeit sein, dies zu bemerken. Zum Beispiel, selbst wenn die zusätzlichen Objekte nicht geleakt werden, könnten Sie sagen: "Warum habe ich 3 von diesem Objekt gemacht? Es sollte nur einmal eins gegeben haben!" –

+0

@KenAspeslagh - also bin ich ein wenig verwirrt ... Nehmen wir ein Beispiel. Ich sehe in den Zuweisungen: nicht mehr als 200 KB auf einmal, aber fast 200 MB in den Gesamt-Bytes. Bedeutet das, dass meine App zu viel Speicherplatz verbraucht und Speicherwarnungen erhält? oder weil das Live nur 200KB ist, kann ich gut gehen? –

18

Stats Erklärung von Apple Docs. Link to the document

enter image description here

enter image description here

+0

Können Sie auch einen Link zu diesem Dokument löschen? – shoumikhin

+1

@shoumikhin Plz überprüfen Antwort bearbeiten –

Verwandte Themen