J'utilise l'outil ObjectAlloc d'Instument pour tenter de comprendre ce que fait la mémoire de mon application (iPhone) et quand et où elle le fait.
J'aimerais vraiment une explication de base de ces statistiques:
- Octets en direct
- #Vivant
- #Transitoire
- Octets globaux
Lorsque j'essaie de déterminer la quantité de mémoire utilisée par mon application, dois-je examiner les octets actifs ou les octets globaux? Cela inclut-il une fuite de mémoire? Que sont les objets transitoires?
Merci
Réponses:
ObjectAlloc
effectue le suivi de toutes les allocations et désallocations de mémoire pendant la durée de l'exécution de votre programme.Il
Living bytes, or Net bytes
s'agit de la quantité de mémoire utilisée par votre application au moment de la sélection dans la chronologie. Cela inclura la mémoire perdue, car la mémoire perdue n'est jamais désallouée.#Living
est le nombre d'allocations d'une certaine taille / type d'objet qui se sont produites (et sont toujours allouées). Ceci est très utile lors de la recherche de fuites.Par exemple, si vous effectuez une action de manière répétitive (comme entrer dans un contrôleur de vue modale) et que vous voyez qu'un
#Living
objet croît de la même quantité à chaque fois, alors vous perdez probablement ces objets. Vous pouvez ensuite confirmer en explorant vers le bas et en voyant la ligne de code exacte qui alloue les objets, et même voir l'index temporel de chaque création.Overall bytes
inclut la mémoire qui a été libérée. Il est utile de suivre ce nombre à des fins d'optimisation des performances, mais pas si vous essayez simplement de voir votre empreinte mémoire actuelle ou de rechercher des fuites.la source
Explication des statistiques de la documentation Apple. Lien vers le document
la source