2011-09-27 9 views
30

Ricevo alcuni avvisi di memoria nella mia app iOS, quindi sono in esecuzione gli strumenti per vedere le allocazioni. Devo dare un'occhiata a * All Allocation * Byte dal vivo o Byte globali?Allocazioni XCode Instruments: guarda Byte in tempo reale o Byte globali?

Qualcuno ha detto che l'iOS può chiudere la mia app se uso per 22 MB, è quella dalla sezione Byte live o Overall?

enter image description here

+0

"Qualcuno ha detto che l'iOS può chiudere la mia app se uso per 22 MB" - puoi riformulare? –

+0

Siamo spiacenti, in questo post: http://stackoverflow.com/questions/4167720/memory-used-by-any-iphone-app Si accenna che se la tua app utilizza più di 22 MB rispetto al sistema operativo potrebbe uccidere la tua app. –

+2

Non esiste una regola reale e veloce - almeno, niente di pubblicato, davvero. Diversi dispositivi hanno diverse quantità di memoria che eseguono versioni diverse di iOS; non vi è alcuna garanzia che il limite massimo del vostro iPad con 4.3 non si trovi entro i limiti di un iPad 2 con 5.0. Come sempre, identifica esattamente quali dispositivi e quali versioni di iOS devono essere indirizzate dalla tua app e utilizza il dispositivo più vincolato per fungere da canarino nella miniera di memoria. –

risposta

46

live Byte è l'utilizzo attuale e è quello che interessa, byte globale comprende tutte allocazione rilasciato. L'altra cosa è guardare il grafico e cercare i picchi. Ad esempio, ho visto un picco enorme di circa 27 MB in un'app a cui stavo lavorando, sapendo che ero in grado di ridurre l'utilizzo della memoria di picco a 8 MB.

Guarda anche nel tempo mentre eserciti la tua app, è possibile avere una notevole crescita della memoria nel tempo che non è trapelata, semplicemente non più utilizzata.

Per una descrizione delle colonne di memoria, vedere Explanation of Live Bytes & Overall Bytes.

+0

C'è un punto in cui una vista viene rilasciata quando viene utilizzata troppa memoria? La mia app rilascia la mia visualizzazione quando i miei byte live sono poco più di 10 MB. –

+3

Vedo figure del genere senza problemi. Se vedi un picco su una transizione potresti vedere cosa si può fare. Ci sono alcuni trucchi con pool di autorelease che possono essere riprodotti in quei casi quando si ottiene un grande oggetto autoreleased restituito. Il meglio è testare su piccoli dispositivi di memoria, iPodTouches, iPad1, iPhone 3GS, ecc. Ottenere un sacco di cose, inviare email al dispositivo, giocare a netflix, ecc. – zaph

+0

Dalla prospettiva Xcode 4.5 (cioè post-ARMv6) , l'iPad 1 è il nuovo dispositivo ancora supportato con la quantità di RAM più bassa proporzionale alla quantità di spazio di archiviazione che le visualizzazioni stanno per esaurire. Sia esso che il 3GS hanno 256 MB di RAM, ma il 3GS ha meno di un quinto di pixel. È quindi la nuova cosa migliore da testare per gli stress della memoria. – Tommy

Problemi correlati