2010-09-14 10 views

Répondre

1

Ce serait logique ne serait-il pas? Chaque fois que vous faites quelque chose dans l'application, quelque chose est probablement attribué, comme vos différentes vues. Par conséquent, les allocations totales augmenteront. Ce n'est qu'un enregistrement des allocations totales.

2

Cela dépend de la colonne de la table que vous regardez. Les chiffres 'Overall' et 'Overall Bytes' vont toujours augmenter, car il s'agit d'un décompte des allocations réalisées sans tenir compte des désallocations. Cependant, les chiffres 'Live Bytes' et '# Living' devraient augmenter lorsqu'un objet ou un bloc de mémoire a été alloué, mais devraient descendre lorsqu'ils sont désalloués.

L'ouverture et la fermeture répétées d'une sous-vue doivent (sous réserve de la mise en cache d'images ou de données) osciller autour d'un nombre fixe d'octets actifs et d'objets vivants/blocs de mémoire. Cependant, les instruments sont parfois un peu confus, comme vous pouvez le voir sur la capture d'écran. L'ensemble de la colonne "# Transitoire" affiche "0", ce qui est évidemment incorrect. Un objet transitoire est simplement un objet qui a été attribué puis désaffecté, c'est-à-dire un objet non vivant.

(# Living + # == # Transitory Dans l'ensemble)

Chaque fois que Instruments me donne cette colonne de zéros, je quitter l'exécution en cours et commencer une nouvelle. Comme pour l'instrument de fuite, il montrera seulement les objets ou les blocs de mémoire qui n'ont plus aucun pointeur pointant vers eux. Si un programme alloue continuellement de plus en plus d'objets/blocs de mémoire mais conserve des pointeurs, l'instrument de fuite ne les affichera pas.