Ceci est une question plus spécifique à suivre sur Une autre question que j'ai demandé récemment . Une réponse correcte pour cette question gagnera également une réponse correcte pour cette question précédente (car cela reste toujours dans la limbe)! P>
Fondamentalement, j'ai une application de bureau Java avec une question de fuite de mémoire. J'utilise le profileur de mémoire dans NetBeans IDE pour profiler le problème de la mémoire. Ce sont les étapes que j'ai prises jusqu'à présent: p>
Le résultat final est que j'ai plusieurs décharges de mémoire enregistrées sur le disque dans Cependant, maintenant la méthode que j'utilise s'appuie sur la création d'hypothèses Cependant, on est avant la fuite de la mémoire et l'autre après la fuite de la mémoire, et ils sont donc évidemment différents. Si je suis capable de comparer ces deux autres tas en utilisant un outil fort>, au lieu de manuellement, je ne dois pas compter sur des hypothèses pour identifier où les fuites se produisent et que les fuites se produisent et peuvent simplement avoir la outil les identifier pour moi. Le profileur IDE NetBeans est-il capable de le faire? Merci! P> *. HPROF code> fichiers. NetBeans IDE me permet de parcourir le contenu (type de base et recherche) de ces décharges de mémoire, et me permet même de me promener le tas em> en voyant quelles références contenues dans chaque instance et quels autres objets font référence à chaque instance. . C'est tout bien et j'ai pu identifier 1 ou 2 fuites de mémoire assez évidentes et rectifier environ 15% du problème jusqu'à présent. P>
Ceci est important pour moi en raison du nombre de classes et d'instances pure impliquées pour cette application particulière (700 et plus et des millions, repsectivement) p>
Sinon, existe-t-il un outil qui est capable d'effectuer cette tâche? P>
3 Réponses :
Vous pouvez utiliser Jaut . Examinez spécifiquement l'option (-Baseline Baseline-Dump-fichier) sur la page I Référence, il indique ce qui suit: p>
"Spécifiez un vidage de tas de base. Les objets des deux décharges de tas avec le même identifiant d'objet seront marqués comme n'étant pas" nouveau ". D'autres objets seront marqués comme" nouveau ". Ceci est utile en comparant deux décharges de tas différents. " p>
Cela peut aider à comparer les deux décharges de tas. P>
Cela nécessite que les deux décharges de tas soient de la même manière de l'application (qui ne semble pas être un problème de Buiz).
@broschb, +1, merci - cela fonctionne pour moi! Mon seul problème avec Jhat est que l'interface est via une page Web assez statique, pas très conviviale. Cela étant dit être capable de marcher sur le dépotoir de tas en utilisant références à cet objet code> et de filtrer ceux-ci avec
nouvelles instances / incluent des sous-classes code>, était exactement ce que je voulais!
Il y a aussi un outil
Ce serait bien si la personne qui a bowndavote ma réponse m'a expliqué pourquoi elle / elle l'a fait. Merci.
Bienvenue pour! Je pense que votre réponse est bonne +1
J'ai pris quelques décharges de tas avec VisualvM; Maintenant, comment puis-je les comparer?
toujours pas répondu et ce n'est certainement pas évident dans l'interface utilisateur.
trouvé ça. Dans l'onglet Résumé, en haut à droite, il existe un lien "Comparer deux vidages de tas". Moins de remplissage, goûte bien.
Veuillez expliquer comment le faire, en particulier, la version VisualvM et certaines captures d'écran aideraient.
Apparemment, cette fonctionnalité n'est plus disponible.
Il a été déplacé dans le coin supérieur droit des "classes" à l'intérieur de l'écran de décharge de tas.
Il semble être parti dans la dernière visualisation 2.0. L'option est toujours présente dans la version JDK 8.
Dans les dernières versions de VisualvM, la fonctionnalité est toujours présente, vient d'emménager dans l'interface graphique. Pour accéder, prenez un dépotoir de tas, cliquez sur la liste déroulante en haut à gauche (devrait être "Résumé" initialement) et sélectionnez "Objets" pour afficher le contenu. Ensuite, immédiatement à droite de cette liste déroulante, un nouveau bouton apparaît lorsque vous appuyez sur la fonctionnalité "Comparer le démarrage".