46 votes

Android ==> Analyse de la mémoire ==> Analyseur de mémoire Eclipse ?

J'ai besoin de vérifier si mon application présente des fuites de mémoire, j'ai également besoin de voir l'allocation de mémoire de mon application. J'ai téléchargé et installé eclipse memory analyzer, et il semble que la première étape consiste à ouvrir un heap dump. Mais qu'est-ce qu'un heap dump, comment puis-je créer un heap dump. Et comment vais-je exactement utiliser ce logiciel, j'ai fait quelques recherches sur Google mais je n'ai trouvé aucune information utile. Merci

40voto

Robby Pond Points 37875

Lorsque vous déboguez votre application, ouvrez DDMS dans Eclipse. Dans la barre d'outils, il y a un bouton "heap dump" que vous pouvez utiliser pour générer un "heap dump" à visualiser dans l'analyseur de mémoire d'Eclipse. Je pense que cela n'est possible qu'avec le SDK 1.6+ ou 2.0+.

10voto

Mathias Lin Points 16035

Le vidage du tas de la VM dalvik doit être converti au format hprof normal à l'aide de l'outil de conversion hprof-conv.exe dans le répertoire tools du SDK Android. Vous pouvez ouvrir ce hprof avec Eclipse MAT ou d'autres outils sont : YourKit http://www.yourkit.com/ et JProbe http://www.quest.com/jprobe/

En plus du DDMS, vous pouvez également créer le hprof à partir de votre application/code (uniquement les SDK les plus récents) via Debug.dumpHprofData(...)

Notez que dans DDMS vous pouvez voir le tas que votre application utilise. Il ne montre pas le tas natif que les ressources externes telles que les bitmaps allouent. Néanmoins, ces ressources doivent également être prises en compte lors de la vérification des fuites de mémoire. Lorsque le tas natif et le tas de l'application s'additionnent pour atteindre 16MB / resp. 24MB, vous obtiendrez une erreur OOM.

Vous pouvez voir le tas natif qui a été utilisé (c'est-à-dire par les bitmaps dans votre application) via Debug.getNativHeapAllocatedSize() .

3voto

Johan Norén Points 179

Voir aussi http://developer.Android.com/guide/developing/debugging/ddms.html#profiling

Si cela peut vous aider, vous pouvez activer le profilage sur des zones locales du code en utilisant l'API de débogage. De cette façon, vous aurez moins de verbiage lorsque vous analyserez les traces dans traceview par exemple. Voir http://macgyverdev.blogspot.com/2011/07/profiling-Android-application-tutorial.html par exemple.

Et des informations plus détaillées sur la façon de convertir les vidages de tas DDMS afin de pouvoir les visualiser dans l'analyseur de mémoire d'Eclipse et trouver les objets qui fuient via l'outil de l'arbre de dominateur : http://macgyverdev.blogspot.com/2011/11/Android-track-down-memory-leaks.html

0voto

bkurzius Points 1167

Voici une excellente vidéo de Patrick Dubroy, réalisée lors de la Google I/O 2011. https://www.youtube.com/watch?v=_CruQY55HOk

Je pense que tout cela est pertinent pour aujourd'hui (2014) aussi....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X