2010-12-11 8 views
0

J'ai une application Android qui devient assez grande et complexe maintenant, et il semble avoir des problèmes de performance intermittents. Une fois, je vais lancer l'application et c'est bien, une autre fois, il sera difficile de changer de point de vue.Détecter les causes de problèmes de performances?

Comment puis-je détecter les causes du problème de performances à l'aide d'outils de débogage afin de pouvoir le corriger?

Répondre

7

Utilisez l'outil ddms fourni avec le SDK. Il a une fonctionnalité intéressante appelée Allocation Tracker qui vous permet de voir en temps réel la quantité de mémoire consommée par votre code et la ligne spécifique qui en est la cause. Dans la plupart des cas, votre application ralentira en raison de mauvaises implémentations d'adaptateur, de mauvaises techniques de mise en page ou de l'utilisation d'un système de cache pour décoder le Bitmaps (comme l'utilisation de SoftReference).

Jetez un oeil à cet article pour une brève explication: Tracking Memory Allocations

a

+2

Pour compléter la réponse de Cristian. Allocations en Java/Android = hiccup dû au fait que le garbage collector est entré en jeu. Essayez donc de ne pas créer de nouveaux objets sauf si vous en avez vraiment besoin. –

+2

Il y a aussi le nouveau 'StrictMode' qui devrait être utile, il s'assurera que vous ne faites rien de trop intensif sur le thread principal. http://developer.android.com/reference/android/os/StrictMode.html – smith324

0

En plus de l'outil Cristian mentionné, Traceview est un autre utile. Ce n'est pas très bien documenté, mais il peut vous donner des informations sur la fréquence d'appel des méthodes et sur les méthodes qui prennent beaucoup de temps.

Un autre bon outil de suivi de la mémoire est MAT, voici une page qui décrit comment l'utiliser avec Android: http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

Tant le tracé et les décharges de tas peut se faire à travers le panneau DDMS, si vous préférez ne pas travailler avec la ligne de commande. Dans Eclipse, dans le panneau des périphériques, sous le périphérique/émulateur que vous utilisez, cliquez sur votre application (répertoriée par nom de package), puis démarrez/arrêtez le profilage de méthode pour obtenir une trace et vous pouvez utiliser HPROF de vidage pour obtenir un décharge de tas. Notez que les vidages doivent être convertis pour fonctionner avec le plugin MAT. L'attaque-memory-problems-on-android ci-dessus décrit comment faire cela.

Questions connexes