2009-05-25 6 views

Répondre

2

En général, si l'empreinte mémoire de votre application continue à augmenter après avoir effectué toutes vos opérations de base une ou deux fois, vous avez probablement une fuite de mémoire. L'empreinte totale de la mémoire se trouve dans la colonne "Net Bytes". Les colonnes "Overall" incluent toutes les allocations dans l'ensemble de votre programme, tandis que les colonnes "Net" soustraient les désallocations. Cependant, l'instrument "Leaks" est beaucoup mieux que ObjectAlloc pour détecter les fuites de mémoire dans mon expérience. Sélectionnez simplement "Exécuter> Démarrer avec l'outil de performance> Fuites" dans Xcode et parcourez votre programme pendant un moment. Si Fuites commence à montrer des blocs qui fuient, vous avez une fuite. Il vous indiquera la trace de pile de chaque allocation, conserve, libère et libère de tout bloc divulgué, et vous pouvez double-cliquer sur la trace de la pile pour sauter à cet endroit dans votre code. Assurez-vous simplement d'activer la «vue détaillée étendue» en cliquant sur le petit bouton carré semi-ombragé en bas de la fenêtre, juste à gauche de l'étiquette «Fuites». Pour obtenir la liste des allocations, cliquez sur le petit triangle d'affichage "triangle dans un cercle" qui apparaît à côté de l'adresse du bloc lorsque vous passez la souris dessus.

3

Vous pouvez trouver ce tutoriel utile: http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/.

De plus, il y a un analyseur statique disponible qui analyse directement votre code source: http://clang.llvm.org/StaticAnalysisUsage.html.

+1

clang est génial. Je fais une politique pour m'assurer qu'il n'y a pas de problèmes avant de commettre des changements. – freespace

+0

Merci pour le conseil sur clang! Je ne savais pas à ce sujet et c'est vraiment chouette. Juste pour info, cependant, j'avais besoin de spécifier à la fois les drapeaux -configuration et -sdk pour xcodebuild afin de le faire fonctionner correctement avec clang. – n8gray