2015-05-18 7 views
6

Ricevo frequenti avvisi di memoria nella mia applicazione ma non so perché. Ecco l'istantanea degli strumenti di allocazione.Che cosa significa "VM anonima" negli strumenti di allocazione?

Instruments

so che non abbiamo alcun controllo su memoria virtuale assegnata a noi, ma sto cercando di capire quali informazioni fa quel numero 26.50 MB mezzi per uno sviluppatore.

 
1. What does a high VM means ? Does it lead to a jetsam ? Is that cause of any other concern ? 
2. Is this value dependent on device ? 
3. Does a low vm means that your app is memory efficient 
4. Does a high VM leads to memory warnings in your app ? 
5. What cause this value to change ? 
6. What steps should a developer take when they see a high vm for their app (like 300 MB) ? 
7. Is VM tracker instrument related to this value ? 

risposta

8

La VM anonima copre un sacco di cose, alcune delle quali sono le cose che si vogliono minimizzare e alcune che sono generalmente meno importanti. La versione breve di "anonymous VM" è che si tratta di indirizzi che hai mappato ma non di nome. Le allocazioni di heap ottengono "named" che consente di seguirle come oggetti. Ma ci sono molte (e molte) cose non oggettuali che cadono nel secchio della "macchina virtuale anonima".

Le cose allocate con malloc possono finire in questa regione. Ma anche file mappati in memoria. Il tuo eseguibile è un file mappato in memoria, ma dal momento che non è mai sporco, parti di esso possono essere scambiate. Quindi "è complicato". Ma in termini grandi e vaghi, sì, ti interessa questa sezione, ma potresti non interessartene molto. Le allocazioni di heap tendono a tenere traccia dei tuoi oggetti ObjC. La VM anonima tiene spesso traccia delle cose su cui non si ha un controllo diretto (come la memorizzazione dei backup di CALayer).

Tutto ciò detto, l'output di strumenti forniti non sembra essere un problema grave. Sospetto che non sia indicativo di un momento in cui stai facendo pressione sulla memoria. Avrai bisogno di entrare in una situazione di avviso di memoria e vedere cosa sta succedendo, quindi scavare nelle specifiche di ciò che sta usando la memoria.

Per ulteriori dettagli su questo, si dovrebbe guardare WWDC 2013 session 704 "Building Efficient OS X Apps" che approfondisce gran parte di questo. Mentre iOS ha un sistema di memoria un po 'diverso, e alcuni strumenti OS X non sono disponibili su iOS, molti dei concetti si applicano ancora.