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.
fonte
2015-05-18 17:24:14