top 20 memory leak detection tools
Llista i comparació de les principals eines de detecció i gestió de fuites de memòria per a sistemes Java, JavaScript, C, C ++, Visual Studio a Linux, Windows i Android:
Aquest tutorial us presentarà un nou concepte que no és més que Gestió de fuites de memòria .
Els nostres programes del sistema tendeixen a tenir problemes de memòria mentre s’executen en màquines, cosa que al seu torn pot provocar una deterioració de les assignacions de memòria.
La fuga de memòria degrada el rendiment del sistema reduint la quantitat de memòria disponible per a cada programa del sistema. Aquests problemes de memòria solen ser determinats i resolts pels programadors que accedeixen al codi font del sistema de programari.
com construir un projecte Java en eclipsi
Els sistemes operatius moderns actuals s’adapten a problemes de memòria. Redueixen instantàniament el consum de memòria i alliberen la memòria ocupada per les aplicacions un cop tancada.
En aquest tutorial, revisarem de què es tracta exactament la fuga de memòria i com tractar les seves eines.
Què aprendreu:
- Principals eines de detecció i gestió de fuites de memòria
- # 1) GCeasy
- # 2) Eclipsi MAT
- # 3) Memcheck de Valgrind
- # 4) GlowCode
- # 5) AQTime per Smartbear
- # 6) WinDbg
- # 7) BoundsChecker
- # 8) Deleaker
- # 9) Dr. Memory
- # 10) Intel Inspector XE
- # 11) Assegureu ++
- # 12) Detector de fuites visuals per a Visual C ++ 2008-2015
- # 13) Visual Studio Profiler
- # 14) Mtuner
- # 15) Detector de fuites de Windows
- # 16) AddressSanitizer (A San)
- # 17) GCViewer
- # 18) Plumbr
- # 19) Validador de memòria .NET
- # 20) Validador de memòria C ++
- # 21) Dynatrace
- Eines de fuites de memòria addicionals
- Conclusió
- Lectura recomanada
Què és la pèrdua de memòria?
# 1) Quan un programa d’ordinador utilitza la memòria innecessàriament i l’assigna de manera incorrecta, al final provoca una pèrdua de memòria al sistema.
# 2) De vegades, el sistema no allibera assignació de memòria no desitjada, ja que no allibera la memòria fins i tot després de tancar l’aplicació o el programa.
# 3) Quan un programa consumeix més de la memòria real necessària, com a resultat, es produiran problemes de memòria i la desacceleració del rendiment del sistema.
# 4) En termes de programació orientada a objectes, si un objecte s’emmagatzema a la memòria però no és accessible pel codi del programa (s’ha definit un objecte i s’ha assignat la memòria, però tot i així s’obté un error que indica que l’objecte no està definit).
# 5) Hi ha alguns llenguatges de programació com C i C ++ que no admeten implícitament la recollida automàtica d’escombraries i poden crear problemes de fuita de memòria mentre s’hi treballa (Java utilitza el procés de recollida d’escombraries per fer front a la fuga de memòria).
# 6) La pèrdua de memòria redueix el rendiment del sistema disminuint la quantitat de memòria disponible, augmentant la quantitat de projecció i, finalment, provocant un error o una disminució del sistema.
# 7) La gestió de fuites de memòria és el mecanisme que s’executa al sistema operatiu per assignar la memòria de manera dinàmica i alliberar-la quan no s’utilitza.
Tipus de fuites de memòria
Les fuites de memòria es poden classificar en diversos tipus i algunes d’elles s’expliquen a continuació.
- Membre de dades filtrades: La memòria assignada per al membre de la classe s'està repartint abans que la classe sigui destruïda.
- Memòria global filtrada: Fugeix la memòria que no forma part de la classe creada però que es pot utilitzar mitjançant diverses funcions i mètodes.
- Memòria estàtica filtrada: Filtre la memòria dedicada a una funció definida per la classe creada.
- Fuga de memòria virtual: Quan no es declara una classe base com a Virtual, no es poden cridar els destructors de l'objecte derivat.
- S'està trucant al repartidor equivocat.
Gestió de fuites de memòria
# 1) La fuita de memòria persisteix quan no hi ha cap referència a l'assignació de memòria.
# 2) Aquestes fuites de memòria fan que un programa s'executi més del temps esperat i consumeix un excés de memòria executant-se contínuament en segon pla o en un servidor.
# 3) Les fuites de memòria afecten més els dispositius portàtils, ja que contenen menys quantitat de memòria i redueixen la capacitat de processament d’un dispositiu.
# 4) Podem agafar elExempledel sistema de gestió de fuites de memòria .NET com,
- CLR (Common Language Runtime) s’encarrega de l’assignació de recursos a .NET i els allibera.
- .NET admet 3 tipus d’assignació de memòria, com ara:
- Pila: Emmagatzema la variable local i els paràmetres del mètode. La referència a tots i cadascun dels objectes creats s’emmagatzema a Stack.
- Muntatge no gestionat: El codi no administrat assignarà l'objecte a una pila no gestionada.
- Pila gestionada: El codi gestionat assignarà l'objecte a una pila gestionada.
# 5) El recollidor de deixalles comprova si hi ha objectes que no s’utilitzen i, un cop trobats, els retiren.
# 6) Garbage Collector gestiona l'arbre o l'estructura en forma de gràfic per comprovar les arrels de l'aplicació de cada objecte accessible directament i indirectament i, si es troba algun objecte que no estigui present, simplement el col·loca a la recollida d'escombraries.
Ara, revisarem algunes eines populars de gestió de fuites de memòria que s’utilitzen àmpliament per gestionar les fuites de memòria.
******************
= >> Poseu-vos en contacte amb nosaltres per suggerir un llistat aquí.
*****************
Principals eines de detecció i gestió de fuites de memòria
A continuació es mostra la llista d’eines de gestió i detecció de fuites de memòria més utilitzades.
# 1) GCeasy
- Aquesta eina gratuïta resol problemes de memòria ràpidament i es coneix com un gran analitzador de memòria.
- És la primera eina d'anàlisi de registres de recollida d'escombraries guiada per màquina.
- També admet tots els registres de GC d'Android, utilitza l'algorisme d'aprenentatge automàtic per detectar problemes de memòria ocorreguts i també notifica els problemes futurs.
- La detecció automàtica de problemes, l’anàlisi instantània de GC en línia i l’anàlisi de registre de GC unificat són algunes de les característiques importants d’aquesta eina.
Feu clic a aquí per anar al lloc oficial de GCeasy.
# 2) Eclipsi MAT
- Eclipse MAT és conegut com un Java Heap Analyzer ràpid i destacat.
- Aquesta eina ajuda a reduir el consum de memòria i detectar fuites de memòria.
- Genera informes automàtics que generen informació sobre l’error que impedeix que el col·lector d’escombraries no pugui recollir objectes.
- El focus principal d’aquesta eina es manté en l’elevat consum de memòria i els errors fora de memòria.
- Aquest projecte s’incorpora amb Eclipse Photon, Eclipse Oxygen, Neon, Kepler, etc.
Feu clic a aquí per anar al lloc oficial Eclipse MAT.
# 3) Memcheck de Valgrind
- Memcheck pot detectar els problemes de memòria següents basats en trucades de memòria malloc, noves, gratuïtes i suprimides:
-
- Memòria no inicialitzada
- Punteres perduts
- Utilitzant memòria alliberada
- Accedir a zones inadequades de la pila
-
- Comprova i dirigeix els paràmetres automàticament allà on estiguin definits.
- Memcheck de Valgrind és un programari comercial per detectar errors de memòria.
- És útil per detectar errors de memòria que es produeixen a C i C ++.
- A més, Memcheck comprova si el buffer definit pel programa és adreçable o no.
- Memcheck fa un seguiment dels blocs de pila per reconèixer el bloc no lliure una vegada que el programa surt.
Feu clic a aquí per anar al lloc oficial de Memcheck.
# 4) GlowCode
- GlowCode és un analitzador de memòria i rendiment comercial en temps real dedicat per a Windows i .NET Framework.
- GlowCode identifica fuites de memòria a les aplicacions en execució escrites en llenguatge compatible amb C ++, C # o NET.
- També comprova el flux de rendiment, la cobertura de codi i el consum excessiu de memòria.
- Admet Windows 10 i Windows Server 2016 i proporciona detecció precoç de problemes de memòria i rendiment en el sistema en execució.
- Admet codi nadiu, gestionat i mixt.
Feu clic a aquí per anar al lloc oficial de GlowCode.
# 5) AQTime per Smartbear
- AQTime és l'eina propietària de Smartbear que admet Delphi, C #, C ++, .NET, Java, etc.
- Detecta les fuites de memòria, el coll d'ampolla de rendiment i els buits de cobertura de codi al sistema d'aplicació.
- Analitza eficientment la informació sobre memòria i rendiment complexos per identificar l’error amb la causa principal.
- L'enfocament més ràpid per detectar fuites de memòria, buits de cobertura de codi i coll d'ampolla de rendiment.
- Anàlisi Delphi de dalt a baix de l’aplicació per identificar fuites de memòria i recursos.
Feu clic a aquí per anar al lloc oficial d'AQTime.
# 6) WinDbg
- Windbg per a Windows s’utilitza per identificar els abocaments de memòria del nucli i examinar el registre de la CPU.
- Es presenta en una versió diferent per a dispositius Windows, aplicacions web i d’escriptori.
- La característica d’identificar abocaments de bloqueig en mode d’usuari es coneix com a 'depuració post-mortem'.
- Podeu desplegar extensions DLL per depurar el temps d’execució del llenguatge d’ordres (CLR).
- Windbg ve amb Ext.dll precarregat que s’utilitza com a extensió estàndard de depuració de Windows.
Feu clic a aquí per anar al lloc oficial de Windbg.
# 7) BoundsChecker
- Aquesta és l'eina pròpia de l'eina de validació de memòria i API per al programari C ++.
- Hi ha dos ActiveCheck i FinalCheck, ActiveCheck es realitza contra l'aplicació i FinalCheck s’utilitza per comprovar la forma instrumental del sistema.
- ActiveCheck pot detectar fuites de memòria mitjançant la supervisió de les trucades API i COM.
- FinalCheck inclou funcions d'ActiveCheck juntament amb la possibilitat de detectar desbordament de memòria intermèdia i memòria no definida.
- La detecció de sobrecàrrega de memòria és la millor característica coneguda per BoundsChecker.
Feu clic a aquí per anar al lloc oficial de BoundsChecker.
# 8) Deleaker
- Deleaker és una eina propietària autònoma de detecció de fuites de memòria i també s'utilitza com a extensió Visual C ++.
- També detecta les fuites de memòria a la memòria virtual i a la memòria virtual i s’integra fàcilment amb qualsevol IDE.
- La versió autònoma depura l'aplicació per mostrar l'assignació actual d'objectes.
- Admet tots els sistemes de 32 i 64 bits i està totalment integrat amb Visual Studio.
- Genera informes rics i exporta el resultat final a XML.
Feu clic a aquí per anar al lloc oficial de Deleaker.
# 9) Dr. Memory
- Dr. Memory és una eina gratuïta de control de memòria per a Windows, Linux i Mac.
- Aquesta eina és capaç d’identificar memòria no inicialitzada i no dirigible i memòria alliberada.
- Dr. Memory defineix tres tipus d'errors:
-
-
- Ubicació encara accessible: memòria accessible per l'aplicació.
- Fugida: la memòria no és accessible per l'aplicació.
- Possible fuita: Memòria accessible mitjançant punteres.
-
-
- A més, defineix dos tipus de fuites, com ara a Directe i Indirecte fugida.
Feu clic a aquí per anar al lloc oficial de Deleaker.
# 10) Intel Inspector XE
- Aquesta eina propietària ajuda a la detecció precoç de les fuites de memòria i ajuda a reduir les despeses per solucionar les fuites de memòria.
- Conegut com a depurador d'errors per a aplicacions C, C ++ que s'executen a Windows i Linux sense utilitzar cap compilador especial.
- També està disponible com a part d’Intel Parallel Studio XE i Intel System Studio.
- Intel Inspector XE realitza anàlisis estàtiques i dinàmiques per identificar la causa arrel de les fuites de memòria.
- L'anàlisi dinàmica detecta causes arrel complexes de fuites de memòria que no són detectades per l'anàlisi estàtica.
- Detecta memòria danyada, accés il·legal a memòria, memòria no inicialitzada i memòria inconsistent, etc.
Feu clic a aquí per anar al lloc oficial d'Intel Inspector XE.
# 11) Assegureu ++
- Parasoft Insure ++ és el depurador de memòria comercial propietari de C / C ++.
- Detecta automàticament violacions inexactes, vinculades a la matriu i memòria no assignada.
- Capaç de realitzar el seguiment de la pila quan es produeix una fuita real.
- Per al conjunt de codi provat, Insure ++ produeix Seqüència de Codi Lineal i Seqüència de Codi de Salt.
Feu clic a aquí per anar al lloc oficial d’Insure ++.
# 12) Detector de fuites visuals per a Visual C ++ 2008-2015
- Visual Leak Detector és una eina gratuïta de detecció de fuites de memòria de codi obert per a C / C ++.
- Diagnostica ràpidament les fuites de memòria a l’aplicació C ++ i selecciona el mòdul que s’ha d’excloure de la fuita de memòria.
- Visual C ++ proporciona detecció de fuites de memòria integrada que disposa d’un conjunt complet de blocs filtrats.
- Els informes de fuites de memòria personalitzables i detallats són la millor característica d'aquesta eina.
- Activa el codi font documentat complet a la biblioteca.
Feu clic a aquí per navegar a the Lloc oficial del detector de fuites visuals.
# 13) Visual Studio Profiler
- Visual Studio inclou l'eina d'ús de memòria que ajuda a detectar fuites de memòria i memòria ineficient.
- Aquesta eina s'utilitza per a aplicacions d'escriptori, aplicacions ASP.NET i aplicacions de Windows.
- Podeu fer instantànies de memòria nativa i gestionada i analitzar instantànies individuals per comprendre l'impacte d'un objecte sobre la memòria.
- Podeu utilitzar més d'una instantània per trobar la causa principal de l'excés d'ús de memòria.
- Activa el codi font documentat complet a la biblioteca.
Feu clic a aquí per navegar a the Lloc oficial de Visual Studio Profiler.
# 14) Mtuner
- Mtuner és un cercador de fuites de memòria que s’utilitza per a aplicacions de Windows i PlayStation.
- Proporciona funcions addicionals per al perfil de memòria.
- Mtuner pot gestionar diverses assignacions per segon amb una escala de rendiment lineal.
- Mtuner inclou un perfil basat en línia d'ordres que és útil per fer un seguiment dels canvis diaris en l'ús de la memòria.
Feu clic a aquí per navegar a thLloc oficial Mtuner.
# 15) Detector de fuites de Windows
- Windows Leak Detector és una eina de detecció de fuites de memòria per a aplicacions de Windows.
- Alguns principals detectors de fuites de Windows són:
-
-
- No es requereix cap codi font i, si hi és, es requereixen menys modificacions.
- Pot analitzar qualsevol aplicació de Windows escrita en qualsevol idioma.
- Eficient i més adequat per a aplicacions desenvolupades en un patró cíclic.
-
-
- Aquesta eina està en desenvolupament constantment i encara té algunes limitacions:
-
-
- Només podeu gestionar un sol procés a la vegada; en el futur s'afegirà la funció de comunicació entre processos.
- Analitza només les funcions HeapAlloc, HeapRealloc i HealFree.
-
-
Els desenvolupadors del sistema treballen per afegir més funcions de memòria com HeapCreate.
Feu clic a aquí per navegar a the Lloc oficial del Windows Leak Detector.
# 16) AddressSanitizer (A San)
- Aquesta eina de codi obert està dissenyada per detectar fuites de memòria al programa C / C ++.
- L'eina més ràpida consisteix en el mòdul d'instrumentació del compilador i la biblioteca en temps d'execució.
- Aquesta eina detecta un desbordament de memòria intermèdia Heap i Stack i fuites de memòria.
- LeakSanitizer està integrat amb AddressSanitizer, que fa la feina de detecció de fuites de memòria.
- Amb LeakSanitizer podem especificar la instrucció per ignorar algunes fuites de memòria enviant-les en un fitxer de supressió separat.
- Aquesta eina és compatible amb Linux, Mac, OS X, Android i iOS Simulator.
Feu clic a aquí per navegar a thLloc oficial AddressSanitizer.
# 17) GCViewer
- GCViewer és una eina gratuïta generada per IBM, HP, Sun Oracle i BEA JVM.
- Aquesta eina s'utilitza per analitzar i analitzar fitxers de registre de GC.
- Podeu generar les dades en format CSV com a aplicació de full de càlcul.
- Funciona a Verbose Garbage Collection. En resum, Verbose Garbage Collection és:
-
- Una recollida d'escombraries generadora basada en esdeveniments per a cada operació.
- La sortida Verbose Garbage Collection conté un ID d’increment i una marca de temps local.
-
Feu clic a aquí per navegar a the Lloc oficial de GCViewer.
# 18) Plumbr
com utilitzar float a Java
- És una eina comercial propietària que s’utilitza per comprovar les fuites de memòria i la recollida d’escombraries a l’aplicació JVM.
- Plumbr es basa en dos mòduls importants, com ara un agent i un portal.
- L’agent admet JVM i envia informació de recollida d’escombraries i fuites de memòria al portal.
- Podeu veure la informació sobre l’ús de memòria i l’emmagatzematge dinàmic al portal.
- L'eina utilitza un algorisme de detecció que es basa en l'anàlisi de dades de rendiment.
Feu clic a aquí per navegar a thLloc oficial de Plumbr.
# 19) Validador de memòria .NET
- .NET Memory Validator és un analitzador de fuites de memòria comercial, un perfilador de memòria que s’utilitza per al desenvolupament de programari i la garantia de qualitat.
- Coneguda com la forma més ràpida de supervisar diverses assignacions de memòria, proporcionant diverses visions com:
-
- Dotacions: Mostra les estadístiques d'assignacions codificades per colors segons la classe i
el mètode definit per assignar la funció. - Objectes: La vista d'objectes mostra l'assignació d'objectes i memòria codificats per colors
estadístiques de les aplicacions en execució. - Generacions: Mostra el nombre d'objectes per tipus d'objecte per a cada objecte
generació assignada per l'aplicació. - Memòria: La vista de memòria mostra l'objecte actual amb informació sobre
tipus d’objecte, mida d’assignació i pila de trucades, marca de temps. - Anàlisi: Aquesta vista mostra l'ús de la memòria.
- Dotacions: Mostra les estadístiques d'assignacions codificades per colors segons la classe i
-
- Les principals funcions d’aquesta eina inclouen la detecció de fuites de memòria, la gestió de fuites de memòria, la realització de proves de regressió per identificar les fuites de memòria.
- El validador de memòria .NET és compatible amb qualsevol versió de .NET framework i CLR.
- Fàcil d'utilitzar, una eina configurable, potent i polivalent per identificar fuites de memòria.
Feu clic a aquí per navegar a the .NET Validador de memòria Lloc oficial.
# 20) Validador de memòria C ++
- Igual que el validador de memòria .NET, aquesta eina també és un analitzador i detector de fuites de memòria comercial.
- El validador de memòria C ++ proporciona diverses visions, com ara:
-
- Memòria: Mostra la informació sobre la memòria assignada i filtrada i rastreja els missatges d'error. Les dades es mostren en una estructura d'arbre que es pot seleccionar i filtrar.
- Objectes: Mostra les estadístiques d'objectes amb tipus d'objecte i objectes assignats, repartits i reassignats.
- Cobertura: Aquesta vista proporciona informació sobre l'ús de la memòria. L'eina inclou filtres que eliminen els fitxers de tercers.
-
- La funció de combinació automàtica ajuda a combinar diverses estadístiques de diverses estadístiques per formar una cobertura composta per al conjunt de proves de regressió.
- A part d’aquestes estadístiques, l’eina proporciona la visualització Línia de temps, punt d’accés, mides i anàlisi de l’aplicació.
- Eina potent i configurable compatible amb Microsoft C i C ++, Intel C ++, etc.
Feu clic a aquí per navegar a the C ++ Memory Validator Lloc oficial.
# 21) Dynatrace
- Dynatrace és una eina comercial que admet la gestió del rendiment tot en un i que inclou un seguiment de pila completa i anàlisi de transaccions individuals.
- Proporciona eines de detecció de fuites de memòria per determinar el consum de memòria.
- Les eines de detecció de fuites de memòria Java de Dynatrace estan disponibles per a aplicacions escrites en Java i .NET Profiler Tools s’utilitza per a aplicacions que s’executen en Java.
- Amb la seva vista única de punt d'accés, podeu trobar un objecte que no utilitzi la memòria de manera efectiva.
- Podeu fer descàrregues d’ús de memòria amb tendències de memòria. Aquesta eina ajuda a identificar aquells objectes que augmenten contínuament el consum de memòria i no es distribueixen correctament de la memòria.
Feu clic a aquí per navegar a the Dynatrace Lloc oficial.
Eines de fuites de memòria addicionals
Aquestes són algunes eines àmpliament utilitzades per detectar fuites de memòria. Una vegada més la llista encara no està acabada aquí, també hi ha altres eines que s'utilitzen per aconseguir el mateix propòsit.
En breu els revisarem:
# 22) NetBeans Profiler :
NetBeans Profiler és una eina propietària de perfils de Java desenvolupada amb funcions com memòria, fils, consultes SQL, etc. Avui aquesta eina inclou algunes funcions noves i avançades per gestionar els abocaments de fils.
URL: Perfilador NetBeans
# 23) Mtrace :
Mtrace està integrat amb glibc (GNUC és un projecte de biblioteca per implementar amb èxit la biblioteca estàndard C) que s’utilitza per detectar fuites de memòria causades per trucades gratuïtes o malloc inusuals.
Un cop cridat, s'atura l'assignació de memòria als objectes. L'escriptura Mtrace Perl s'utilitza per escanejar el fitxer de registre creat per detectar fuites de memòria. A més, si hi proporcioneu el codi font, es pot entendre la ubicació exacta on es va produir el problema.
URL: Mtrace
# 24) Visual Java VM :
Visual VM és una eina molt útil per als desenvolupadors per rastrejar i fer un seguiment de les fuites de memòria. Analitza les dades del munt i el col·lector de deixalles. Assegura l'ús optimitzat de la memòria i ajuda a millorar el rendiment de l'aplicació.
Ofereix funcions com Anàlisi de fils i Anàlisi d’abocament de dades per resoldre problemes en temps d’execució.
Aquí hem acabat amb les eines de gestió de fuites de memòria més populars. Podem triar-ne una o més segons les àrees de memòria crítiques del nostre sistema.
A més, amb l’ús d’aquest programari, no només podem facilitar la tasca, sinó que també podem reduir el consum de temps necessari per detectar fuites de memòria, que és comparativament una tasca tediosa.
URL: Java Visual VM
Conclusió
Les eines de gestió de fuites de memòria redueixen la proporció d’esforços i el temps dedicat a gestionar la memòria. La gestió de l'accés a la memòria, l'assignació i el seguiment de fuites són una tasca tan important, ja que la memòria és la columna vertebral de qualsevol programari per conservar i gestionar les vostres dades de manera eficient.
Una vegada més, sense l'assignació de memòria adequada, no es pot executar ni el sistema d'aplicacions. Per evitar fallades del sistema i millorar el seu rendiment, hem de dur a terme la gestió de fuites de memòria.
Tenint present aquesta necessitat, moltes organitzacions fan ús de les eines disponibles per a això, alhora que facilitaran les coses a ells i a l’usuari final.
******************
= >> Poseu-vos en contacte amb nosaltres per suggerir un llistat aquí.
******************
Lectura recomanada
- Com es corregeix la pèrdua de memòria a les aplicacions d'Android mitjançant l'eina DDMS
- Les millors eines de prova de programari 2021 (Eines d'automatització de proves de control de qualitat)
- Desplegament de Java: creació i execució del fitxer JAR de Java
- Màquina virtual Java: com ajuda JVM a executar aplicacions Java
- Modificadors d'accés a Java: tutorial amb exemples
- Tutorial de reflexió de Java amb exemples
- Introducció al llenguatge de programació Java: vídeo tutorial
- 25 millors marcs i eines de prova de Java per a proves d'automatització (part 3)