web-dev-qa-db-fra.com

Instruments ObjectAlloc: Explication des octets actifs et des octets globaux

J'utilise l'outil ObjectAlloc d'Instument pour essayer de comprendre ce que la mémoire de mon application (iPhone) fait et quand et où elle le fait.

J'aimerais vraiment une explication de base de ces statistiques:

  • Octets actifs
  • Vivant

  • Transitoire

  • Octets globaux

Lorsque j'essaie de déterminer la quantité de mémoire utilisée par mon application, dois-je consulter les octets actifs ou les octets globaux? Cela comprend-il une fuite de mémoire? Quels sont les objets transitoires?

Merci

86
Ross

ObjectAlloc suit toutes les allocations et désallocations de mémoire au cours de l'exécution de votre programme.

Le Living bytes, or Net bytes est la quantité de mémoire utilisée par votre application au moment que vous sélectionnez dans la chronologie. Cela inclura la fuite de mémoire, car la fuite de mémoire n'est jamais désallouée.

#Living est le nombre d'allocations d'un certain type de taille/objet (et qui 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 modal), et que vous voyez que #Living d'un objet croît de la même façon à chaque fois, alors vous fuyez probablement ces objets. Vous pouvez ensuite confirmer en explorant et en voyant la ligne de code exacte qui alloue les objets, et même voir l'index de temps que chacun a été créé.

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.

110
Ken Aspeslagh

Explication des statistiques de Apple docs. Lien vers le document

enter image description here

enter image description here

18
Pranav Jaiswal