2011-09-30 2 views
0

J'utilise des instruments pour trouver des fuites de mémoire dans mon application. Lorsqu'un alloc objet, un affichage bloc bleu (ligne) dans l'instrument, comme ceci:Comment savoir quels sont réellement ces blocs bleus dans Instruments?

Screenshot of Instruments's timeline, showing the Allocations graph http://naituw.com/temp/instruments.png

Lorsque l'objet a été communiqué, la ligne bleue disparaîtra.

Mais quand je fais une opération dans mon application, certains bloc bleu gauche là-bas, ne disparaît pas, Comment puis-je savoir ce que ces blocs est en fait dans la mémoire? Merci!

+0

Seulement si un bloc rouge apparaît, il y a une fuite. Sinon, il n'y a pas de fuite. – booleanBoy

+0

@booleanBoy: Cela dépend de l'instrument que vous regardez. Vous parlez de l'instrument Leaks; la capture d'écran montre l'instrument Allocations. –

+0

@PeterHosey Got it thanks :) – booleanBoy

Répondre

0

Sélectionnez l'instrument et de regarder dans la liste dans la moitié inférieure de la fenêtre. Il montrera un tableau ou un contour (selon l'instrument) listant ce que l'instrument a enregistré.

Pour l'instrument Affectations, il énumère les choses que votre demande a attribués. Selon les paramètres d'affichage, il peut s'agir d'objets encore en vie ou de tous les objets, même ceux que vous avez libérés.

Pour l'instrument Fuites, il énumère les choses que votre demande a attribués et fuite (à savoir, n'a plus de référence à). Notez que vous pouvez toujours gaspiller des quantités de mémoire toujours croissantes sur des choses que vous n'utiliserez jamais, non pas parce que vous n'avez pas de référence, mais parce que c'est dans un cache en écriture seule (vous le stockez mais ne le regardez jamais) ou une situation similaire. Bill Bumgarner appelle cela "mémoire abandonnée". Avec l'un ou l'autre instrument, vous pouvez cliquer sur les boutons within dans la liste pour l'explorer plus en profondeur, pour voir la liste des allocations d'un type donné (par exemple, tous les NSImages) ou tout ce qui est arrivé à un seul objet. naissance à la mort. Ce dernier est extrêmement utile pour traquer les fuites et les crashs de sur-relâchement, et c'est la raison pour laquelle le template Zombies d'Instruments est tellement meilleur que NSZombieEnabled.

+0

Merci beaucoup! ~ « Mémoire abandonnée » est ce que je cherche .. je trouve la fonction « coup de tas » dans les instruments peuvent aider à le détecter. – naituw

0

En instrument fuites ces émissions les allocations de mémoire qui ont eu lieu au moment donné.

+0

Merci pour la réponse ~ Puis-je connaître le nom de classe de chaque bloc? ou quelle ligne de code les attribue? – naituw

+0

Oui en fait, vous ne la connaissez, car ceux-ci afficheront avec vos actions, vous effectuez tout en testant l'application – rptwsthi

Questions connexes