top 20 memory leak detection tools
Lista e comparação das principais ferramentas de detecção e gerenciamento de vazamento de memória para Java, JavaScript, C, C ++, Visual Studio em sistemas Linux, Windows e Android:
Este tutorial irá apresentá-lo a um novo conceito que nada mais é do que Gerenciamento de Vazamento de Memória .
Nossos programas de sistema tendem a ter alguns problemas de memória durante a execução em máquinas, o que por sua vez pode causar a destruição de alocações de memória.
O vazamento de memória degrada o desempenho do sistema, reduzindo a quantidade de memória disponível para cada programa em seu sistema. Esses problemas de memória são geralmente determinados e resolvidos pelos programadores que acessam o código-fonte do sistema de software.
perguntas da entrevista sql com 5 anos de experiência
Os sistemas operacionais modernos de hoje são adaptáveis a problemas de memória. Eles reduzem instantaneamente o consumo de memória e liberam a memória ocupada pelos aplicativos depois de fechados.
Neste tutorial, revisaremos o que o vazamento de memória está relacionado exatamente e como lidar com suas ferramentas.
O que você aprenderá:
- Principais ferramentas de detecção e gerenciamento de vazamento de memória
- # 1) GCeasy
- # 2) Eclipse MAT
- # 3) Memcheck por Valgrind
- # 4) GlowCode
- # 5) AQTime de Smartbear
- # 6) WinDbg
- # 7) BoundsChecker
- # 8) Deleaker
- # 9) Dr. Memória
- # 10) Intel Inspector XE
- # 11) Segure ++
- # 12) Detector de vazamento visual para Visual C ++ 2008-2015
- # 13) Visual Studio Profiler
- # 14) Mtuner
- # 15) Detector de vazamento do Windows
- # 16) AddressSanitizer (A San)
- # 17) GCViewer
- # 18) Plumbr
- # 19) Validador de memória .NET
- # 20) Validador de memória C ++
- # 21) Dynatrace
- Ferramentas adicionais de vazamento de memória
- Conclusão
- Leitura recomendada
O que é Vazamento de Memória?
# 1) Quando um programa de computador usa memória desnecessariamente e a aloca de maneira inadequada, ele acaba causando um vazamento de memória no sistema.
#dois) Às vezes, o sistema não libera a alocação de memória indesejada, pois não libera a memória mesmo após fechar o aplicativo ou programa.
# 3) Quando um programa consome mais do que a memória real necessária, como resultado, ocorrerão problemas de memória e redução do desempenho do sistema.
# 4) Em termos de programação orientada a objetos, se um objeto está armazenado na memória, mas não acessível pelo código do programa (Definiu um objeto e alocou a memória, mas ainda obtemos um erro informando que o objeto não está definido).
# 5) Existem algumas linguagens de programação, como C e C ++, que não suportam a coleta de lixo automática implicitamente e podem criar tais problemas de vazamento de memória ao trabalhar nisso (Java usa o processo de coleta de lixo para lidar com o vazamento de memória).
# 6) O vazamento de memória reduz o desempenho do sistema, diminuindo a quantidade de memória disponível, aumentando a quantidade de thrashing e, eventualmente, causando falha ou lentidão do sistema.
# 7) Gerenciamento de vazamento de memória é o mecanismo executado no sistema operacional para alocar a memória dinamicamente e liberar quando não estiver em uso.
Tipos de vazamentos de memória
Os vazamentos de memória podem ser categorizados em vários tipos, e alguns deles são explicados a seguir.
- Membro de dados vazados: A memória alocada para o membro da classe está sendo desalocada antes que a classe seja destruída.
- Memória global vazada: Vazamentos de memória que não fazem parte da classe criada, mas podem ser usados por várias funções e métodos.
- Memória estática vazada: Fuga a memória que é dedicada a uma função definida pela classe criada.
- Vazamento de memória virtual: Quando uma classe base não é declarada como Virtual, os destruidores do objeto derivado não podem ser chamados.
- Chamando o desalocador errado.
Gerenciamento de Vazamento de Memória
# 1) O vazamento de memória persiste quando não há referência à alocação de memória.
#dois) Esses vazamentos de memória fazem com que um programa seja executado mais do que o tempo esperado e consome memória em excesso ao ser executado continuamente em segundo plano ou em um servidor.
# 3) Dispositivos portáteis são mais afetados por vazamentos de memória, pois contêm menos quantidade de memória e reduzem a capacidade de processamento de um dispositivo.
# 4) Podemos levar oExemplodo .NET Memory Leak Management System, como,
- CLR (Common Language Runtime) cuida da alocação de recursos no .NET e os libera.
- .NET oferece suporte a 3 tipos de alocação de memória, como:
- Pilha: Armazena variáveis locais e parâmetros de método. A referência a cada objeto criado está sendo armazenada na Pilha.
- Heap não gerenciado: O código não gerenciado alocará o objeto em uma pilha não gerenciada.
- Heap gerenciado: O código gerenciado alocará o objeto em uma pilha gerenciada.
# 5) O coletor de lixo verifica os objetos que não estão em uso e, uma vez encontrados, são removidos pelo coletor de lixo.
# 6) O Garbage Collector gerencia a árvore ou estrutura semelhante a um gráfico para verificar as raízes do aplicativo para cada objeto acessível direta e indiretamente e se algum objeto que não estiver presente for encontrado, ele simplesmente o coloca na coleta de lixo.
Agora, revisaremos algumas ferramentas populares de gerenciamento de vazamento de memória, amplamente utilizadas para gerenciar vazamentos de memória.
******************
= >> Contate-Nos para sugerir uma lista aqui.
*****************
Principais ferramentas de detecção e gerenciamento de vazamento de memória
A seguir está a lista das ferramentas de detecção e gerenciamento de vazamento de memória mais comumente usadas.
# 1) GCeasy
- Essa ferramenta gratuita resolve problemas de memória rapidamente e é conhecida como um ótimo analisador de memória.
- É a primeira ferramenta de análise de registro de coleta de lixo guiada por máquina.
- Suporta todos os logs do Android GC também, usa o algoritmo de aprendizado de máquina para detectar problemas de memória ocorridos e também notifica sobre problemas futuros.
- Detecção automática de problemas, análise de GC online instantânea e análise de registro de GC unificada são alguns dos recursos importantes desta ferramenta.
Clique aqui para navegar até o site oficial do GCeasy.
# 2) Eclipse MAT
- Eclipse MAT é conhecido como um Java Heap Analyzer rápido e com recursos.
- Esta ferramenta ajuda a reduzir o consumo de memória e detectar vazamentos de memória.
- Gera relatórios automáticos gerando informações sobre o erro que impede o coletor de lixo de coletar objetos.
- O foco principal desta ferramenta permanece no alto consumo de memória e erros de falta de memória.
- Este projeto incorpora Eclipse Photon, Eclipse Oxygen, Neon, Kepler etc.
Clique aqui para navegar até o site oficial do Eclipse MAT.
# 3) Memcheck por Valgrind
- Memcheck pode detectar os seguintes problemas de memória com base em chamadas de memória malloc, new, free e delete:
-
- Memória não inicializada
- Ponteiros perdidos
- Usando memória liberada
- Acessando áreas inadequadas na pilha
-
- Ele verifica e direciona os parâmetros automaticamente onde quer que sejam definidos.
- Memcheck by Valgrind é um software comercial para detectar erros de memória.
- É útil para detectar erros de memória que ocorreram em C e C ++.
- Além disso, Memcheck verifica se o buffer definido pelo programa é endereçável ou não.
- Memcheck mantém um registro de blocos de heap para reconhecer o bloco não livre assim que o programa é encerrado.
Clique aqui para navegar até o site oficial do Memcheck.
# 4) GlowCode
- GlowCode é um analisador comercial dedicado de desempenho e memória em tempo real para Windows e .NET Framework.
- GlowCode identifica vazamentos de memória nos aplicativos em execução escritos em linguagem compatível com C ++, C # ou NET.
- Ele também verifica o fluxo de desempenho, cobertura de código e consumo excessivo de memória.
- Suporta Windows 10 e Windows Server 2016 e fornece detecção precoce de problemas de desempenho e memória no sistema em execução.
- Suporta código nativo, gerenciado e misto.
Clique aqui para navegar até o site oficial GlowCode.
# 5) AQTime de Smartbear
- AQTime é a ferramenta proprietária da Smartbear que suporta Delphi, C #, C ++, .NET, Java etc.
- Detecta vazamentos de memória, gargalos de desempenho e lacunas de cobertura de código no sistema de aplicativos.
- Analisa com eficiência as informações sobre memória complexa e desempenho para identificar o bug com a causa raiz.
- A abordagem mais rápida para detectar vazamentos de memória, lacunas de cobertura de código e gargalo de desempenho.
- Análise Delphi de cima para baixo do aplicativo para identificar vazamento de memória e recursos.
Clique aqui para navegar até o site oficial AQTime.
# 6) WinDbg
- Windbg para Windows é usado para identificar despejos de memória do kernel e examinar o registro da CPU.
- Ele vem em uma construção diferente para dispositivos Windows, aplicativos da Web e de desktop.
- O recurso de identificação de despejos de memória no modo de usuário é conhecido como ‘Depuração Pós-Mortem’.
- Você pode implantar extensões DLL para depurar o Command Language Runtime (CLR).
- O Windbg vem com Ext.dll pré-carregado que é usado como uma extensão do depurador padrão do Windows.
Clique aqui para navegar até o site oficial do Windbg.
# 7) BoundsChecker
- Esta é a ferramenta proprietária para memória e ferramenta de validação de API para software C ++.
- São dois ActiveCheck e FinalCheck, ActiveCheck é executado no aplicativo e Checagem final é usado para verificar a forma instrumental do sistema.
- O ActiveCheck pode detectar vazamentos de memória monitorando chamadas de API e COM.
- FinalCheck vem com recursos de ActiveCheck junto com a capacidade de detectar estouro de buffer e memória indefinida.
- A detecção de saturação de memória é o melhor recurso pelo qual o BoundsChecker é conhecido.
Clique aqui para navegar até o site oficial do BoundsChecker.
# 8) Deleaker
- Deleaker é uma ferramenta autônoma de detecção de vazamento de memória e também é usada como extensão do Visual C ++.
- Detecta vazamentos de memória no heap e na memória virtual e integra-se facilmente com qualquer IDE.
- A versão autônoma depura o aplicativo para mostrar a alocação atual de objetos.
- Suporta todos os sistemas de 32 bits e 64 bits e totalmente integrado com Visual Studio.
- Gera relatórios sofisticados e exporta o resultado final para XML.
Clique aqui para navegar até o site oficial da Deleaker.
# 9) Dr. Memória
- Dr. Memory é uma ferramenta gratuita de monitoramento de memória para Windows, Linux e Mac.
- Essa ferramenta é capaz de identificar memória não inicializada e não endereçável e memória liberada.
- Dr. Memory define 3 tipos de erros:
-
-
- Ainda - local acessível: memória acessível pelo aplicativo.
- Vazar: memória não acessível pelo aplicativo.
- Possível vazamento: Memória que pode ser acessada por meio de ponteiros.
-
-
- Além disso, define dois tipos de vazamentos, como um direto e Indireto vazar.
Clique aqui para navegar até o site oficial da Deleaker.
# 10) Intel Inspector XE
- Esta ferramenta proprietária ajuda na detecção precoce de vazamentos de memória e ajuda a reduzir despesas para consertar vazamentos de memória.
- Conhecido como depurador de erros para aplicativos C, C ++ em execução no Windows e Linux sem o uso de nenhum compilador especial.
- Ele também está disponível como parte do Intel Parallel Studio XE e Intel System Studio.
- O Intel Inspector XE realiza análises estáticas e dinâmicas para identificar a causa raiz dos vazamentos de memória.
- A análise dinâmica detecta causas raízes complexas para vazamentos de memória que não são detectados pela análise estática.
- Ele detecta memória corrompida, acesso ilegal à memória, memória não inicializada e memória inconsistente, etc.
Clique aqui para navegar até o site oficial do Intel Inspector XE.
# 11) Segure ++
- Parasoft Insure ++ é o depurador de memória comercial proprietário para C / C ++.
- Detecta automaticamente violações imprecisas de limites de array e memória não alocada.
- Capaz de realizar rastreamento de pilha quando ocorre um vazamento real.
- Para o conjunto de códigos testados, o Insure ++ produz a Sequência de Código Linear e a Sequência de Código de Salto.
Clique aqui para navegar até o site oficial do Insure ++.
# 12) Detector de vazamento visual para Visual C ++ 2008-2015
- O Visual Leak Detector é uma ferramenta gratuita de detecção de vazamento de memória de código aberto para C / C ++.
- Diagnostica rapidamente vazamentos de memória no aplicativo C ++ e seleciona o módulo que precisa ser excluído do vazamento de memória.
- Visual C ++ fornece detecção de vazamento de memória interna avails um conjunto completo de blocos vazados.
- Relatórios de vazamento de memória personalizáveis e detalhados são o melhor recurso desta ferramenta.
- Ativa o código-fonte documentado completo para a biblioteca.
Clique aqui para navegar para oe Site oficial do Visual Leak Detector.
# 13) Visual Studio Profiler
- Visual Studio vem com a ferramenta de uso de memória que ajuda a detectar vazamentos de memória e memória ineficiente.
- Esta ferramenta é usada para aplicativos de desktop, aplicativos ASP.NET e aplicativos do Windows.
- Você pode tirar instantâneos da memória gerenciada e nativa e pode analisar instantâneos únicos para entender o impacto de um objeto na memória.
- Você pode usar mais de um instantâneo para encontrar a causa raiz do uso excessivo de memória.
- Ativa o código-fonte documentado completo para a biblioteca.
Clique aqui para navegar para oe Site oficial do Visual Studio Profiler.
# 14) Mtuner
- Mtuner é um localizador de vazamento de memória usado para aplicativos do Windows e PlayStation.
- Fornece funcionalidades adicionais para perfis de memória.
- Mtuner pode lidar com uma série de alocações por segundo com escalonamento de desempenho linear.
- Mtuner vem com perfil baseado em linha de comando que é útil para rastrear mudanças diárias no uso de memória.
Clique aqui para navegar para oe site oficial do Mtuner.
# 15) Detector de vazamento do Windows
- O Detector de Vazamento do Windows é uma ferramenta de detecção de vazamento de memória para aplicativos do Windows.
- Alguns detectores de vazamento principais do Windows são:
-
-
- Nenhum código-fonte é necessário e, se houver, requer menos modificações.
- Pode analisar qualquer aplicativo do Windows escrito em qualquer idioma.
- Eficaz e mais adequado para aplicação desenvolvida em um padrão cíclico.
-
-
- Esta ferramenta está em constante desenvolvimento e ainda tem algumas limitações:
-
-
- Você pode gerenciar apenas um único processo por vez. O recurso de comunicação entre processos será adicionado no futuro.
- Ele analisa apenas as funções HeapAlloc, HeapRealloc e HealFree.
-
-
Os desenvolvedores do sistema estão trabalhando para adicionar mais funções de memória como HeapCreate.
Clique aqui para navegar para oe Site oficial do Windows Leak Detector.
# 16) AddressSanitizer (A San)
- Esta ferramenta de código aberto foi projetada para detectar vazamentos de memória no programa C / C ++.
- A ferramenta mais rápida consiste no Módulo de Instrumentação do Compilador e na biblioteca de tempo de execução.
- Essa ferramenta encontra estouro de buffer de pilha e pilha e vazamentos de memória.
- O LeakSanitizer é integrado ao AddressSanitizer, que faz o trabalho de detecção de vazamento de memória.
- Com o LeakSanitizer, podemos especificar a instrução para ignorar alguns vazamentos de memória, enviando-a em um arquivo de supressão separado.
- Esta ferramenta é compatível com Linux, Mac, OS X, Android e simulador de iOS.
Clique aqui para navegar para oe Site oficial do AddressSanitizer.
# 17) GCViewer
- GCViewer é uma ferramenta gratuita gerada por IBM, HP, Sun Oracle e BEA JVMs.
- Esta ferramenta é usada para analisar e analisar arquivos de log do GC.
- Você pode gerar os dados no formato CSV como o aplicativo de planilha.
- Ele funciona na coleta de lixo detalhada. Em resumo, a coleta de lixo detalhada é:
-
- Uma coleta de lixo de geração baseada em eventos para cada operação.
- A saída Verbose Garbage Collection contém o ID do incremento e o carimbo de data / hora local.
-
Clique aqui para navegar para oe Site oficial do GCViewer.
# 18) Plumbr
melhor ferramenta de reparo grátis para windows 7
- É uma ferramenta comercial proprietária usada para verificar vazamentos de memória e coleta de lixo no aplicativo JVM.
- Plumbr é baseado em dois módulos importantes, como um Agente e um Portal.
- O agente suporta JVM e envia informações de coleta de lixo e vazamento de memória para o Portal.
- Você pode ver as informações sobre o uso de memória e heap no Portal.
- A ferramenta usa um algoritmo de detecção baseado na análise de dados de desempenho.
Clique aqui para navegar para oe Plumbr Site oficial.
# 19) Validador de memória .NET
- .NET Memory Validator é um analisador de vazamento de memória comercial, um criador de perfil de memória usado para desenvolvimento de software e garantia de qualidade.
- Conhecida como a maneira mais rápida de monitorar várias alocações de memória, fornecendo vários insights, como:
-
- Alocações: Exibe estatísticas de alocações codificadas por cores com base na classe e
o método definido para atribuição de função. - Objetos: A visualização do objeto exibe o objeto codificado por cores e a alocação de memória
estatísticas para os aplicativos em execução. - Gerações: Exibe o número de objetos por tipo de objeto para cada objeto
geração alocada pelo aplicativo. - Memória: A visualização da memória exibe o objeto atual com informações sobre
tipo de objeto, tamanho da alocação e pilha de chamadas, carimbo de data / hora. - Análise: Esta exibição mostra o uso de memória.
- Alocações: Exibe estatísticas de alocações codificadas por cores com base na classe e
-
- As principais funções desta ferramenta incluem detecção de vazamento de memória, tratamento de vazamentos de memória, execução de testes de regressão para identificar vazamentos de memória.
- O validador de memória .NET é compatível com qualquer versão do .NET framework e CLR.
- Fácil de usar, uma ferramenta configurável, poderosa e multifuncional para identificar vazamentos de memória.
Clique aqui para navegar para oe Validador de memória .NET Site oficial.
# 20) Validador de memória C ++
- Assim como o .NET Memory Validator, essa ferramenta também é um detector e analisador de vazamento de memória comercial.
- O C ++ Memory Validator fornece vários insights, como:
-
- Memória: Exibe as informações sobre a memória alocada e perdida e rastreia mensagens de erro. Os dados são mostrados em uma estrutura de árvore que pode ser selecionada e filtrada.
- Objetos: Mostra estatísticas de objeto com tipo de objeto e objetos alocados, desalocados e realocados.
- Cobertura: Esta exibição fornece informações sobre o uso de memória. A ferramenta vem com filtros que removem os arquivos de terceiros.
-
- O recurso Auto-Merge ajuda a mesclar várias estatísticas de vários insights para formar uma cobertura composta para o conjunto de testes de regressão.
- Além desses insights, a ferramenta fornece uma visão de Linha do Tempo, Hotspot, Tamanhos e Análise do aplicativo.
- Ferramenta poderosa e configurável compatível com Microsoft C e C ++, Intel C ++ etc.
Clique aqui para navegar para oe C ++ Memory Validator Site oficial.
# 21) Dynatrace
- Dynatrace é uma ferramenta comercial que oferece suporte ao gerenciamento de desempenho tudo-em-um e compreende monitoramento de pilha completa e análise de transação única.
- Ele fornece ferramentas de detecção de vazamento de memória para determinar o consumo de memória.
- As ferramentas de detecção de vazamento de memória Dynatrace Java estão disponíveis para aplicativos escritos em Java e as ferramentas .NET Profiler são usadas para aplicativos executados em Java.
- Com sua visualização de ponto de acesso exclusivo, você pode encontrar um objeto que não está usando a memória de forma eficaz.
- Você pode executar despejos de tendências de memória de uso de memória. Essa ferramenta ajuda a identificar os objetos que estão continuamente aumentando o consumo de memória e não são desalocados corretamente da memória.
Clique aqui para navegar para oe Site oficial da Dynatrace.
Ferramentas adicionais de vazamento de memória
Estas são algumas ferramentas amplamente utilizadas para detectar vazamentos de memória. Novamente, a lista ainda não terminou aqui, existem algumas outras ferramentas que são usadas para atingir o mesmo propósito.
Vamos revê-los em breve:
# 22) Perfilador do NetBeans :
O NetBeans Profiler é uma ferramenta de criação de perfil Java proprietária desenvolvida com recursos como memória, threads, consultas SQL etc. Hoje, essa ferramenta vem com alguns recursos novos e avançados para lidar com os despejos de thread.
URL: NetBeans Profiler
# 23) Mtrace :
Mtrace é integrado com glibc (GNUC é um projeto de biblioteca para implementação bem-sucedida da biblioteca padrão C) que é usado para detectar vazamentos de memória causados por chamadas malloc / free incomuns.
Uma vez chamado, ele interrompe a alocação de memória aos objetos. O script Mtrace Perl é usado para examinar o arquivo de log criado em busca de vazamentos de memória. Além disso, se você fornecer o código-fonte a ele, o local exato onde o problema ocorreu pode ser compreendido.
URL: Mtrace
# 24) Java Visual VM :
Visual VM é uma ferramenta muito útil para desenvolvedores rastrear e rastrear vazamentos de memória. Ele analisa os dados do heap e o coletor de lixo. Ele garante o uso otimizado da memória e ajuda a melhorar o desempenho do aplicativo.
Oferece recursos como Thread Analysis e Heap Dump Analysis para resolver problemas de tempo de execução.
Aqui, terminamos com as ferramentas de gerenciamento de vazamento de memória mais populares. Podemos escolher um ou mais de acordo com as áreas de memória críticas em nosso sistema.
Além disso, com o uso deste software, podemos não apenas tornar a tarefa mais fácil, mas também podemos reduzir o consumo de tempo necessário para detectar vazamentos de memória, o que é comparativamente uma tarefa tediosa.
URL: Java Visual VM
Conclusão
As ferramentas de gerenciamento de vazamento de memória reduzem a proporção de esforços e o tempo gasto no gerenciamento de memória. Gerenciar o acesso e a alocação de memória e rastrear vazamentos são tarefas importantes, pois a memória é a espinha dorsal de qualquer software para reter e gerenciar seus dados com eficiência.
Novamente, sem a alocação de memória adequada, não se pode nem mesmo executar o sistema de aplicativos. Para evitar a falha do sistema e melhorar seu desempenho, precisamos realizar o gerenciamento de vazamento de memória.
Tendo essa necessidade em mente, muitas organizações fazem uso das ferramentas disponíveis para isso, o que acabará por tornar as coisas mais fáceis para elas e para o usuário final.
******************
= >> Contate-Nos para sugerir uma lista aqui.
******************
Leitura recomendada
- Como corrigir vazamento de memória em aplicativos Android usando a ferramenta DDMS
- Melhores ferramentas de teste de software 2021 (QA Test Automation Tools)
- Implantação Java: Criação e execução de arquivo JAR Java
- Java Virtual Machine: como a JVM ajuda na execução de aplicativos Java
- Modificadores de acesso em Java - Tutorial com exemplos
- Tutorial de reflexão Java com exemplos
- Introdução à linguagem de programação Java - tutorial em vídeo
- 25 melhores estruturas e ferramentas de teste de Java para teste de automação (Parte 3)