top 20 memory leak detection tools
Liste et comparaison des principaux outils de détection et de gestion des fuites de mémoire pour Java, JavaScript, C, C ++, Visual Studio sur les systèmes Linux, Windows et Android:
Ce tutoriel vous présentera un nouveau concept qui n'est rien d'autre Gestion des fuites de mémoire .
Nos programmes système ont tendance à avoir des problèmes de mémoire lorsqu'ils s'exécutent sur des machines, ce qui peut à son tour entraîner la ruine des allocations de mémoire.
Une fuite de mémoire dégrade les performances du système en réduisant la quantité de mémoire disponible pour chaque programme de votre système. Ces problèmes de mémoire sont généralement déterminés et résolus par les programmeurs qui accèdent au code source du système logiciel.
horloge d'entrée et sortie sans logiciel
Les systèmes d'exploitation modernes d'aujourd'hui sont adaptables aux problèmes de mémoire. Ils réduisent instantanément la consommation de mémoire et libèrent la mémoire occupée par les applications une fois celle-ci fermée.
Dans ce tutoriel, nous allons passer en revue ce qui concerne exactement la fuite de mémoire et comment gérer ses outils.
Ce que vous apprendrez:
- Principaux outils de détection et de gestion des fuites de mémoire
- # 1) GCeasy
- # 2) MAT Eclipse
- # 3) Memcheck par Valgrind
- # 4) GlowCode
- # 5) AQTime par Smartbear
- # 6) WinDbg
- # 7) BoundsChecker
- # 8) Délécher
- # 9) Dr Memory
- # 10) Inspecteur Intel XE
- # 11) Assurer ++
- # 12) Détecteur de fuites visuel pour Visual C ++ 2008-2015
- # 13) Visual Studio Profiler
- # 14) Mtuner
- # 15) Détecteur de fuites Windows
- # 16) AddressSanitizer (A San)
- # 17) GCViewer
- # 18) Plumbr
- # 19) Validateur de mémoire .NET
- # 20) Validateur de mémoire C ++
- # 21) Dynatrace
- Outils supplémentaires de fuite de mémoire
- Conclusion
- lecture recommandée
Qu'est-ce que la fuite de mémoire?
#1) Lorsqu'un programme informatique utilise inutilement de la mémoire et ne l'alloue pas correctement, il provoque finalement une fuite de mémoire dans le système.
#deux) Parfois, le système ne libère pas d'allocation de mémoire indésirable car il n'a pas libéré la mémoire même après la fermeture de l'application ou du programme.
# 3) Lorsqu'un programme consomme plus que la mémoire réelle requise, des problèmes de mémoire et un ralentissement des performances du système se produisent en conséquence.
# 4) En termes de programmation orientée objet, si un objet est stocké dans la mémoire mais non accessible par le code du programme (défini un objet et alloué la mémoire mais nous obtenons quand même une erreur indiquant que l'objet n'est pas défini).
# 5) Certains langages de programmation tels que C et C ++ ne prennent pas implicitement en charge le garbage collection automatique et peuvent créer de tels problèmes de fuite de mémoire tout en travaillant dessus (Java utilise le processus de Garbage Collection pour traiter la fuite de mémoire).
# 6) Une fuite de mémoire réduit les performances du système en diminuant la quantité de mémoire disponible, en augmentant la quantité de battements et en provoquant éventuellement une panne ou un ralentissement du système.
# 7) La gestion des fuites de mémoire est le mécanisme qui s'exécute dans le système d'exploitation pour allouer la mémoire de manière dynamique et la libère lorsqu'elle n'est pas utilisée.
Types de fuites de mémoire
Les fuites de mémoire peuvent être classées en plusieurs types, et quelques-unes d'entre elles sont expliquées ci-dessous.
- Membre de données ayant subi une fuite: La mémoire allouée pour le membre de classe est libérée avant que la classe ne soit détruite.
- Fuite de mémoire globale: Fuite de la mémoire qui ne fait pas partie de la classe créée mais qui peut être utilisée par diverses fonctions et méthodes.
- Fuite de mémoire statique: Fuite de la mémoire dédiée à une fonction définie par la classe créée.
- Fuite de mémoire virtuelle: Lorsqu'une classe de base n'est pas déclarée comme virtuelle, les destructeurs de l'objet dérivé ne peuvent pas être appelés.
- Appel du mauvais revendeur.
Gestion des fuites de mémoire
#1) La fuite de mémoire persiste lorsqu'il n'y a aucune référence à l'allocation de mémoire.
#deux) Ces fuites de mémoire provoquent l'exécution d'un programme plus que le temps prévu et consomme un excès de mémoire en s'exécutant en continu en arrière-plan ou sur un serveur.
# 3) Les périphériques portables sont plus affectés par les fuites de mémoire car ils contiennent moins de mémoire et réduisent la capacité de traitement d'un périphérique.
# 4) Nous pouvons prendre leExempledu système de gestion des fuites de mémoire .NET comme,
- CLR (Common Language Runtime) s'occupe de l'allocation des ressources dans .NET et les libère.
- .NET prend en charge 3 types d'allocation de mémoire tels que:
- Empiler: Stocke la variable locale et les paramètres de méthode. La référence à chaque objet créé est stockée sur Stack.
- Heap non géré: Le code non managé allouera l'objet sur une pile non managée.
- Heap géré: Le code géré allouera l'objet sur une pile gérée.
# 5) Le garbage collector vérifie les objets qui ne sont pas utilisés et une fois trouvés, ils sont supprimés par le garbage collector.
# 6) Garbage Collector gère l'arborescence ou la structure de type graphique pour vérifier les racines de l'application à chaque objet directement et indirectement accessible et si des objets qui ne sont pas présents sont trouvés, il les place simplement dans le garbage collection.
Nous allons maintenant passer en revue certains outils populaires de gestion des fuites de mémoire qui sont largement utilisés pour gérer les fuites de mémoire.
******************
= >> Nous contacter pour suggérer une liste ici.
*****************
Principaux outils de détection et de gestion des fuites de mémoire
Vous trouverez ci-dessous la liste des outils de détection et de gestion des fuites de mémoire les plus couramment utilisés.
# 1) GCeasy
- Cet outil gratuit résout rapidement les problèmes de mémoire et est connu comme un excellent analyseur de mémoire.
- Il s'agit du tout premier outil d'analyse des journaux de récupération de place guidé par machine.
- Prend également en charge tous les journaux Android GC, utilise l'algorithme d'apprentissage automatique pour détecter les problèmes de mémoire survenus et informe également des problèmes futurs.
- La détection automatique des problèmes, l'analyse instantanée du GC en ligne, l'analyse de journalisation GC unifiée sont quelques-unes des caractéristiques importantes de cet outil.
Cliquez sur ici pour accéder au site officiel de GCeasy.
# 2) MAT Eclipse
- Eclipse MAT est connu comme un analyseur de tas Java rapide et fonctionnel.
- Cet outil permet de réduire la consommation de mémoire et de détecter les fuites de mémoire.
- Génère des rapports automatiques générant des informations sur l'erreur qui empêche le garbage collector de collecter des objets.
- L'objectif principal de cet outil reste la consommation élevée de mémoire et les erreurs de mémoire insuffisante.
- Ce projet intègre avec Eclipse Photon, Eclipse Oxygen, Neon, Kepler etc.
Cliquez sur ici pour accéder au site officiel d'Eclipse MAT.
# 3) Memcheck par Valgrind
- Memcheck peut détecter les problèmes de mémoire suivants en fonction des appels de mémoire malloc, nouveaux, libres et supprimés:
-
- Mémoire non initialisée
- Pointeurs perdus
- Utilisation de la mémoire libérée
- Accéder aux zones inappropriées de la pile
-
- Il vérifie et dirige automatiquement les paramètres là où ils sont définis.
- Memcheck by Valgrind est un logiciel commercial pour détecter les erreurs de mémoire.
- Il est utile de détecter les erreurs de mémoire qui se produisent en C et C ++.
- De plus, Memcheck vérifie si le tampon défini par le programme est adressable ou non.
- Memcheck garde une trace des blocs de tas pour reconnaître le bloc non libre une fois que le programme est quitté.
Cliquez sur ici pour accéder au site officiel de Memcheck.
# 4) GlowCode
- GlowCode est un analyseur de performances et de mémoire en temps réel commercial dédié pour Windows et .NET Framework.
- GlowCode identifie les fuites de mémoire dans les applications en cours d'exécution écrites en langage compatible C ++, C # ou NET.
- Il vérifie également le flux de performances, la couverture du code et la consommation excessive de mémoire.
- Prend en charge Windows 10 et Windows Server 2016 et fournit une détection précoce des problèmes de performances et de mémoire dans le système en cours d'exécution.
- Prend en charge le code natif, géré et mixte.
Cliquez sur ici pour accéder au site officiel de GlowCode.
# 5) AQTime par Smartbear
- AQTime est l'outil propriétaire de Smartbear qui prend en charge Delphi, C #, C ++, .NET, Java, etc.
- Détecte les fuites de mémoire, les goulots d'étranglement des performances et les lacunes de couverture de code dans le système d'application.
- Analyse efficacement les informations sur la mémoire complexe et les performances pour identifier le bogue avec la cause première.
- L'approche la plus rapide pour détecter les fuites de mémoire, les lacunes de couverture de code et les goulots d'étranglement des performances.
- Analyse Delphi de haut en bas de l'application pour identifier les fuites de mémoire et de ressources.
Cliquez sur ici pour accéder au site officiel d'AQTime.
# 6) WinDbg
- Windbg pour Windows est utilisé pour identifier les vidages de mémoire du noyau et examiner le registre du processeur.
- Il est disponible dans une version différente pour les appareils Windows, les applications Web et de bureau.
- La fonction d’identification des vidages sur incident en mode utilisateur est appelée «débogage post-mortem».
- Vous pouvez déployer des extensions DLL pour déboguer le CLR (Command Language Runtime).
- Windbg est fourni avec Ext.dll préchargé qui sont utilisés comme extension de débogueur Windows standard.
Cliquez sur ici pour accéder au site officiel de Windbg.
# 7) BoundsChecker
- Il s'agit de l'outil propriétaire de la mémoire et de l'outil de validation API pour les logiciels C ++.
- Il y en a deux ActiveCheck et FinalCheck, ActiveCheck est effectuée contre l'application et Vérification finale est utilisé pour vérifier la forme instrumentale du système.
- ActiveCheck peut détecter les fuites de mémoire en surveillant les appels API et COM.
- FinalCheck est livré avec les fonctionnalités d'ActiveCheck ainsi que la capacité de détecter le dépassement de tampon et la mémoire non définie.
- La détection de dépassement de mémoire est la meilleure fonction pour laquelle BoundsChecker est connu.
Cliquez sur ici pour accéder au site officiel de BoundsChecker.
# 8) Délécher
- Deleaker est un outil de détection de fuite de mémoire propriétaire autonome et est également utilisé comme extension Visual C ++.
- Détecte également les fuites de mémoire dans le tas et la mémoire virtuelle et s'intègre facilement à n'importe quel IDE.
- La version autonome débogue l'application pour afficher l'allocation actuelle des objets.
- Prend en charge tous les systèmes 32 bits et 64 bits et est entièrement intégré à Visual Studio.
- Génère des rapports riches et exporte le résultat final au format XML.
Cliquez sur ici pour accéder au site officiel de Deleaker.
# 9) Dr Memory
- Dr. Memory est un outil gratuit de surveillance de la mémoire pour Windows, Linux et Mac.
- Cet outil est capable d'identifier la mémoire non initialisée et non adressable et la mémoire libérée.
- Dr. Memory définit 3 types d'erreurs:
-
-
- Emplacement toujours accessible: mémoire accessible par l'application.
- Fuir: mémoire non accessible par l'application.
- Fuite possible: Mémoire accessible via des pointeurs.
-
-
- En outre, il définit deux types de fuites tels que un Direct et Indirect fuir.
Cliquez sur ici pour accéder au site officiel de Deleaker.
# 10) Inspecteur Intel XE
- Cet outil propriétaire permet de détecter rapidement les fuites de mémoire et de réduire les dépenses liées à la correction des fuites de mémoire.
- Connu sous le nom de débogueur d'erreurs pour les applications C, C ++ fonctionnant sous Windows et Linux sans utiliser de compilateur spécial.
- Il est également disponible dans le cadre d'Intel Parallel Studio XE et d'Intel System Studio.
- Intel Inspector XE effectue une analyse statique et dynamique pour identifier la cause première des fuites de mémoire.
- L'analyse dynamique détecte les causes profondes complexes des fuites de mémoire qui ne sont pas détectées par l'analyse statique.
- Il détecte la mémoire corrompue, l'accès illégal à la mémoire, la mémoire non initialisée et la mémoire incohérente, etc.
Cliquez sur ici pour accéder au site officiel d'Intel Inspector XE.
# 11) Assurer ++
- Parasoft Insure ++ est le débogueur de mémoire commercial propriétaire pour C / C ++.
- Détecte automatiquement les violations inexactes liées à la baie, la mémoire non allouée.
- Capable d'effectuer une trace de pile lorsqu'une fuite réelle s'est produite.
- Pour l'ensemble de code testé, Insure ++ produit une séquence de code linéaire et une séquence de code de saut.
Cliquez sur ici pour accéder au site officiel d'Insure ++.
# 12) Détecteur de fuites visuel pour Visual C ++ 2008-2015
- Visual Leak Detector est un outil de détection de fuite de mémoire open source gratuit pour C / C ++.
- Diagnostique rapidement les fuites de mémoire dans l'application C ++ et sélectionne le module qui doit être exclu de la fuite de mémoire.
- Visual C ++ fournit une détection de fuite de mémoire intégrée utilise un ensemble complet de blocs perdus.
- Des rapports de fuite de mémoire personnalisables et détaillés sont la meilleure fonctionnalité de cet outil.
- Active le code source documenté complet dans la bibliothèque.
Cliquez sur ici pour naviguer vers ee Site officiel du détecteur de fuites visuel.
# 13) Visual Studio Profiler
- Visual Studio est fourni avec l'outil d'utilisation de la mémoire qui permet de détecter les fuites de mémoire et la mémoire inefficace.
- Cet outil est utilisé pour les applications de bureau, les applications ASP.NET et les applications Windows.
- Vous pouvez prendre des instantanés de la mémoire gérée et native et analyser des instantanés uniques pour comprendre l'impact d'un objet sur la mémoire.
- Vous pouvez utiliser plusieurs instantanés pour trouver la cause première d'une utilisation excessive de la mémoire.
- Active le code source documenté complet dans la bibliothèque.
Cliquez sur ici pour naviguer vers ee Site officiel de Visual Studio Profiler.
# 14) Mtuner
- Mtuner est un chercheur de fuites de mémoire utilisé pour les applications Windows et PlayStation.
- Fournit des fonctionnalités supplémentaires pour le profilage de la mémoire.
- Mtuner peut gérer un certain nombre d'allocations par seconde avec une mise à l'échelle linéaire des performances.
- Mtuner est livré avec un profilage basé sur la ligne de commande qui est utile pour suivre les changements quotidiens dans l'utilisation de la mémoire.
Cliquez sur ici pour naviguer vers ee Site officiel de Mtuner.
# 15) Détecteur de fuites Windows
- Windows Leak Detector est un outil de détection de fuite de mémoire pour les applications Windows.
- Certains principaux détecteurs de fuites Windows sont:
-
-
- Aucun code source n'est requis et s'il existe, il nécessite moins de modifications.
- Peut analyser n'importe quelle application Windows écrite dans n'importe quelle langue.
- Efficace et mieux adapté à une application développée selon un modèle cyclique.
-
-
- Cet outil est constamment en cours de développement et présente encore quelques limites:
-
-
- Vous ne pouvez gérer qu'un seul processus à la fois, la fonction de communication inter-processus sera ajoutée à l'avenir.
- Il analyse uniquement les fonctions HeapAlloc, HeapRealloc et HealFree.
-
-
Les développeurs système du système travaillent sur l'ajout de fonctions de mémoire supplémentaires telles que HeapCreate.
Cliquez sur ici pour naviguer vers ee Site officiel de Windows Leak Detector.
# 16) AddressSanitizer (A San)
- Cet outil open source est conçu pour détecter les fuites de mémoire dans le programme C / C ++.
- L'outil le plus rapide se compose du module d'instrumentation du compilateur et de la bibliothèque d'exécution.
- Cet outil détecte le débordement de la mémoire tampon du tas et de la pile et les fuites de mémoire.
- LeakSanitizer est intégré à AddressSanitizer qui fait le travail de détection des fuites de mémoire.
- Avec LeakSanitizer, nous pouvons spécifier l'instruction d'ignorer certaines fuites de mémoire en l'envoyant dans un fichier de suppression séparé.
- Cet outil est pris en charge sur Linux, Mac, OS X, Android et iOS Simulator.
Cliquez sur ici pour naviguer vers ee Site officiel AddressSanitizer.
# 17) GCViewer
- GCViewer est un outil gratuit généré par les JVM IBM, HP, Sun Oracle et BEA.
- Cet outil est utilisé pour analyser et analyser les fichiers journaux GC.
- Vous pouvez générer les données au format CSV en tant qu'application de feuille de calcul.
- Cela fonctionne sur la collecte des ordures verbeuses. Verbose Garbage Collection en bref est:
-
- Un garbage collection basé sur les événements pour chaque opération.
- La récupération de place verbeuse en sortie contient l'ID d'incrément et l'horodatage local.
-
Cliquez sur ici pour naviguer vers ee Site officiel de GCViewer.
# 18) Plumbr
qa ou ba qui est mieux
- C'est un outil commercial propriétaire qui est utilisé pour vérifier les fuites de mémoire et le garbage collection dans l'application JVM.
- Plumbr est basé sur deux modules importants tels qu'un agent et un portail.
- L'agent prend en charge JVM et envoie des informations de récupération de place et de fuite de mémoire au portail.
- Vous pouvez voir les informations sur l'utilisation de la mémoire et le tas sur le portail.
- L'outil utilise un algorithme de détection basé sur l'analyse des données de performance.
Cliquez sur ici pour naviguer vers ee Site officiel de Plumbr.
# 19) Validateur de mémoire .NET
- .NET Memory Validator est un analyseur de fuites de mémoire commercial, un profileur de mémoire utilisé pour le développement de logiciels et l'assurance qualité.
- Connu comme le moyen le plus rapide de surveiller plusieurs allocations de mémoire, fournissant plusieurs informations telles que:
-
- Allocations: Affiche les statistiques d'allocations à code couleur basées sur la classe et
la méthode définie pour l'attribution de la fonction. - Objets: La vue des objets affiche les objets à code couleur et l'allocation de mémoire
statistiques pour les applications en cours d'exécution. - Générations: Affiche le nombre d'objets par type d'objet pour chaque objet
génération allouée par l'application. - Mémoire: La vue mémoire affiche l'objet actuel avec des informations sur
type d'objet, taille d'allocation et pile d'appels, horodatage. - Analyse: Cette vue affiche l'utilisation de la mémoire.
- Allocations: Affiche les statistiques d'allocations à code couleur basées sur la classe et
-
- Les principales fonctions de cet outil incluent la détection des fuites de mémoire, la gestion des fuites de mémoire, l'exécution de tests de régression pour identifier les fuites de mémoire.
- Le validateur de mémoire .NET est compatible avec toutes les versions de .NET Framework et CLR.
- Facile à utiliser, un outil configurable, puissant et polyvalent pour identifier les fuites de mémoire.
Cliquez sur ici pour naviguer vers ee .NET Memory validator Site officiel.
# 20) Validateur de mémoire C ++
- Tout comme .NET Memory Validator, cet outil est également un détecteur et analyseur de fuites de mémoire commercial.
- Le validateur de mémoire C ++ fournit plusieurs informations telles que:
-
- Mémoire: Affiche les informations sur la mémoire allouée et perdue et trace les messages d'erreur. Les données sont affichées dans une structure arborescente qui peut être sélectionnée et filtrée.
- Objets: Affiche les statistiques d'objet avec le type d'objet et les objets alloués, désalloués et réalloués.
- Couverture: Cette vue fournit des informations sur l'utilisation de la mémoire. L'outil est livré avec des filtres qui suppriment les fichiers tiers.
-
- La fonction de fusion automatique permet de fusionner plusieurs statistiques à partir de plusieurs insights pour former une couverture composite pour la suite de tests de régression.
- Outre ces informations, l'outil fournit une vue chronologique, hotspot, tailles et analyse de l'application.
- Outil puissant et configurable compatible avec Microsoft C et C ++, Intel C ++, etc.
Cliquez sur ici pour naviguer vers ee Site officiel du validateur de mémoire C ++.
# 21) Dynatrace
- Dynatrace est un outil commercial qui prend en charge la gestion des performances tout-en-un et comprend une surveillance complète de la pile et une analyse de transaction unique.
- Il fournit des outils de détection des fuites de mémoire pour déterminer la consommation de mémoire.
- Les outils de détection de fuite de mémoire Java de Dynatrace sont disponibles pour les applications écrites en Java et .NET Profiler Tools est utilisé pour les applications exécutées en Java.
- Avec sa vue unique des hotspots, vous pouvez trouver un objet qui n'utilise pas efficacement la mémoire.
- Vous pouvez effectuer des vidages de tendance de la mémoire sur l'utilisation de la mémoire. Cet outil aide à identifier les objets qui augmentent continuellement la consommation de mémoire et ne sont pas correctement désalloués de la mémoire.
Cliquez sur ici pour naviguer vers ee Site officiel de Dynatrace.
Outils supplémentaires de fuite de mémoire
Voici quelques outils largement utilisés pour détecter les fuites de mémoire. Encore une fois, la liste n'est pas encore terminée ici, il existe également d'autres outils qui sont utilisés pour atteindre le même objectif.
Nous les passerons en revue en bref:
# 22) Profileur NetBeans :
NetBeans Profiler est un outil de profilage Java propriétaire développé avec des fonctionnalités telles que la mémoire, les threads, les requêtes SQL, etc. Aujourd'hui, cet outil est livré avec des fonctionnalités nouvelles et avancées pour gérer les vidages de threads.
URL: Profileur NetBeans
# 23) Mtrace :
Mtrace est intégré à la glibc (GNUC est un projet de bibliothèque pour une implémentation réussie de la bibliothèque standard C) qui est utilisé pour détecter les fuites de mémoire causées par des appels malloc / free inhabituels.
Une fois appelé, il arrête l'allocation de mémoire aux objets. Le script Mtrace Perl est utilisé pour analyser le fichier journal créé pour détecter les fuites de mémoire. De plus, si vous lui fournissez le code source, l'emplacement exact où le problème s'est produit peut être compris.
URL: Mtrace
# 24) Visuel Java VM :
Visual VM est un outil très utile pour les développeurs pour tracer et suivre les fuites de mémoire. Il analyse les données du tas et le ramasse-miettes. Il garantit une utilisation optimisée de la mémoire et contribue à améliorer les performances de l'application.
Offre des fonctionnalités telles que l'analyse des threads et l'analyse du vidage de tas pour résoudre les problèmes d'exécution.
Ici, nous en avons terminé avec les outils de gestion des fuites de mémoire les plus populaires. Nous pouvons en choisir une ou plusieurs selon les zones de mémoire critiques de notre système.
De plus, avec l'utilisation de ce logiciel, nous pouvons non seulement faciliter la tâche, mais également réduire la consommation de temps nécessaire pour détecter les fuites de mémoire, ce qui est une tâche relativement fastidieuse.
URL: Java Visual VM
Conclusion
Les outils de gestion des fuites de mémoire réduisent la proportion d'efforts et le temps consacré à la gestion de la mémoire. La gestion de l'accès à la mémoire et de l'allocation et le suivi des fuites sont une tâche si importante que la mémoire est l'épine dorsale de tout logiciel pour conserver et gérer vos données efficacement.
Encore une fois, sans allocation de mémoire appropriée, on ne peut même pas exécuter le système d'application. Pour éviter les pannes du système et améliorer ses performances, nous devons effectuer une gestion des fuites de mémoire.
En gardant ce besoin à l'esprit, de nombreuses organisations utilisent les outils disponibles à cet effet, tout en leur facilitant finalement les choses et pour l'utilisateur final.
******************
= >> Nous contacter pour suggérer une liste ici.
******************
lecture recommandée
- Comment réparer une fuite de mémoire dans les applications Android à l'aide de l'outil DDMS
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Déploiement Java: création et exécution d'un fichier JAR Java
- Machine virtuelle Java: comment JVM aide à exécuter une application Java
- Modificateurs d'accès en Java - Tutoriel avec des exemples
- Tutoriel de réflexion Java avec des exemples
- Introduction au langage de programmation Java - Tutoriel vidéo
- 25 meilleurs cadres et outils de test Java pour les tests d'automatisation (partie 3)