0

J'essaie de trouver des fuites de mémoire dans mon application Android. J'ai la situation suivante:Analyseur de mémoire Eclipse - aider à trouver une fuite

classe A créé une classe A $ 24 qui a créé un fil. Ce thread a une référence à la classe A, donc c'est la fuite. Je comprends que 24 $ A est une classe anonyme créée en classe A, mais comment puis-je savoir où elle a été créée, dans quelle ligne dans le code. Mon problème est de comprendre qui est le fil problématique.

Répondre

1

Dans l'explorateur de projet du point de vue des ressources utiliser le menu Affichage, sélectionnez « Personnaliser l'affichage ... » et décocher « fichiers de classe interne » et « dossiers de sortie de Java ». Vous devriez maintenant voir les fichiers de classe générés dans l'explorateur de projet dans un dossier "bin".

Si vous accédez à votre fichier A $ 24.class, vous pouvez l'ouvrir en double-cliquant. Recherchez des lignes en haut parler de sélecteurs de champ, comme celui-ci

// Field descriptor #10 Z 
    private final synthetic boolean val$fStartMinimized 

Dans cet exemple, un dernier champ fStartMinimized est utilisé par la classe anonyme (et donc copiés dans la classe anonyme). En utilisant ce nom de champ, vous devriez être capable de localiser la classe anynomous en question.

S'il n'y a pas de telle déclaration de champ (et aussi aucun nom de méthode ne vous donne un indice), alors vous pouvez obtenir plus d'informations avec le ByteCode outline plugin (mais je ne l'ai jamais utilisé moi-même).

+0

Merci pour la réponse. Toutefois, je ne trouve pas l'option d'affichage Personnaliser –

+0

OK, l'a trouvée maintenant –

Questions connexes