Je suis en train d'évaluer les deux Scitech .NET Memory Profiler 3.1 y ANTS Memory Profiler 5.1 . J'ai essayé celui de JetBrains il y a un an ou deux et il n'était pas aussi bon que ANTS, alors je ne me suis pas donné la peine cette fois-ci. D'après les sites web, il semblerait qu'il ne soit pas aussi bon pour mémoire que les deux autres.
L'ANTS et le profileur de mémoire Scitech ont tous deux des caractéristiques que l'autre n'a pas, donc le meilleur dépend de vos préférences. D'une manière générale, celui de Scitech fournit des informations plus détaillées, tandis que celui d'ANTS est vraiment incroyable lorsqu'il s'agit d'identifier l'objet qui fuit. Dans l'ensemble, je préfère celui d'ANTS parce qu'il est très rapide à identifier les fuites possibles.
Voici les principaux avantages et inconvénients de chacun d'entre eux, d'après mon expérience :
Caractéristiques communes d'ANTS et de Scitech .NET Memory Profiler
- Fonction d'analyse en temps réel
- Excellentes vidéos pratiques sur leurs sites web
- Facile à utiliser
- Raisonnablement performant (évidemment plus lent que sans le profiler, mais pas au point d'en être frustré).
- Afficher les instances des objets qui fuient
- En fait, ils font tous les deux très bien leur travail
ANTS
- Filtres en un clic pour trouver les fuites les plus courantes y compris : les objets maintenus en vie uniquement par des gestionnaires d'événements, les objets qui sont éliminés mais toujours en vie et les objets qui sont uniquement maintenus en vie par une référence provenant d'un objet éliminé. Il s'agit probablement de la caractéristique la plus importante d'ANTS - la recherche de fuites est incroyablement rapide grâce à cela. D'après mon expérience, la majorité des fuites sont causées par des gestionnaires d'événements qui n'ont pas été décrochés et ANTS vous amène directement à ces objets. Génial.
- Graphique de rétention d'objets. Bien que les mêmes informations soient disponibles dans Scitech, elles sont beaucoup plus faciles à interpréter dans ANTS.
- Affiche la taille avec les enfants en plus de la taille de l'objet lui-même (mais seulement lorsqu'une instance est sélectionnée, malheureusement, pas dans la liste globale des classes).
- Meilleure intégration à Visual Studio (clic droit sur le graphique pour accéder au fichier)
Scitech .NET Memory Profiler
- Affiche la trace de la pile lorsque l'objet a été alloué. Il s'agit de vraiment utile pour les objets qui sont attribués à de nombreux endroits différents. Avec ANTS, il est difficile de déterminer exactement où l'objet fuyant a été créé.
- Affiche le nombre d'objets jetables qui n'ont pas été éliminés. Bien qu'il n'indique pas la présence d'une fuite, il permet d'identifier les possibilités de résoudre ce problème et d'améliorer les performances de votre application grâce à un ramassage plus rapide des ordures.
- Options de filtrage plus détaillées (plusieurs colonnes peuvent être filtrées indépendamment).
- Présente des informations sur le nombre total d'objets créés (y compris ceux qui ont été ramassés). ANTS n'affiche que des statistiques sur les objets "en direct". Cela facilite l'analyse et le réglage des performances globales de l'application (par exemple, en identifiant les objets créés inutilement qui ne fuient pas nécessairement).
En résumé, je pense qu'ANTS vous aide à trouver plus rapidement ce qui fuit, tandis que Scitech fournit un peu plus de détails sur les performances globales de la mémoire de votre application et sur les objets individuels, une fois que vous savez ce qu'il faut regarder (par exemple, la trace de la pile lors de la création). Si la trace de pile et le suivi des objets jetables non éliminés étaient ajoutés à ANTS, je ne verrais pas la nécessité d'utiliser quoi que ce soit d'autre.