2010-01-28 10 views
85

Utilizzo lo strumento ObjectAlloc di Instument nel tentativo di capire cosa sta facendo la memoria della mia applicazione (iPhone) e quando e dove lo sta facendo.Strumenti ObjectAlloc: spiegazione di byte attivi e byte globali

avrei davvero come una spiegazione di base di queste statistiche:

  • diretta Bytes
  • Living

  • Transitorio

  • Bytes complesso

Quando sto provando per capire quanta memoria mia a si sta utilizzando pplication, devo guardare Byte Live o Byte globali? Questo include la perdita di memoria? Cosa sono gli oggetti transitori?

Grazie

+6

colonne hanno brevi descrizioni quando si passa sopra le loro intestazioni. –

risposta

109

ObjectAlloc tiene traccia di tutti allocazione di memoria e deallocazione nel tempo il vostro programma è in esecuzione.

Il Living bytes, or Net bytes indica la quantità di memoria utilizzata dall'applicazione al momento selezionato nella timeline. Ciò includerà la memoria trapelata, poiché la memoria trapelata non viene mai rilasciata.

#Living è il numero di allocazioni di un determinato tipo di dimensione/oggetto (e sono ancora allocate). Questo è molto utile quando cerchi perdite.

Ad esempio, se si esegue un'azione ripetitiva (come quando si esce da un controller di visualizzazione modale) e si vede che lo #Living di un oggetto aumenta di volta in volta la stessa quantità, significa che si stanno perdendo quegli oggetti . È quindi possibile confermare eseguendo il drill-down e visualizzando l'esatta riga di codice che alloca gli oggetti e persino visualizzando l'indice temporale in cui è stato creato ciascuno di essi.

Overall bytes include memoria che è stata rilasciata. È utile tenere traccia di quel numero per scopi di ottimizzazione delle prestazioni, ma non se stai solo cercando di vedere il tuo attuale ingombro di memoria o cercare perdite.

+3

Cosa vorresti provare ad ottimizzare in termini di Byte globali? Cercare di mantenere il numero piccolo significa prestazioni migliori? –

+4

Sì, corretto. Una causa comune di problemi di prestazioni è l'esecuzione accidentale dello stesso codice più di una volta. Lo strumento Allocazioni può essere un buon modo per notare. Ad esempio, anche se gli oggetti extra non vengono trapelati, si potrebbe dire: "Perché ho creato 3 di quell'oggetto? Dovrebbe esserci sempre stato uno solo!" –

+0

@KenAspeslagh - quindi sono un po 'confuso ... Facciamo un esempio. Vedo nelle allocazioni: non più di 200 KB in una sola volta, ma quasi 200 MB nei byte generali. Significa che la mia app richiede troppo e riceverà avvisi sulla memoria? o perché il Live è a soli 200KB, sono a posto? –

18

Statistica spiegazione da apple docs. Link to the document

enter image description here

enter image description here

+0

Puoi anche lasciare un link a questo documento? – shoumikhin

+1

@shoumikhin Plz verifica risposta modifica –

Problemi correlati