2010-11-02 19 views
26

Sto avendo difficoltà a risolvere i problemi relativi alla memoria nella mia applicazione iPad, ma, cosa positiva, ho imparato a conoscere "heapshots" a causa di ciò. La cosa brutta è che non sono ancora in grado di capire cosa significano alcune delle informazioni che mi sono state fornite. alt textCosa significa <non-object> in Allocazione "heapshots"?

Quindi, quali sono questi non oggetti che sono ancora vivi e prendono la maggior parte della memoria descritta in Heap Growth? È possibile sbarazzarsi di loro? Sembra che la maggior parte di essi siano correlati a varie operazioni di disegno, CALayer, contesto ed ecc. (Categoria: "Malloc" o "Realloc"). Posso fornire maggiori dettagli se necessario.

risposta

20

Significa che il blocco di memoria non è stato assegnato per un oggetto (ad esempio, struttura pura c). Di solito sono allocati dal codice della struttura di sistema, quindi ci sono altri oggetti che perdono. Per esempio. se hai dimenticato di rilasciare UIView, il suo layer non verrà liberato.

È possibile aprire il pannello "Dettagli estesi" (vedere il menu "Visualizza") e analizzare lo stack di chiamate. Tieni presente che uno release che hai dimenticato può causare molte perdite di memoria, quindi prova a correggere le perdite più facili e poi controlla se altre perdite scompaiono.

Un altro trucco. È possibile disabilitare uno per uno il blocco funzionale della propria applicazione e vedere se le perdite scompaiono. Quindi sarai in grado di localizzare il modulo (classe, blocco funzionale, ecc.) Dove si verifica.