Um número de formas estão disponíveis para determinar se um programa de computador é uma fuga de memória . Um programador pode vasculhar o código fonte para se certificar de que toda a memória alocada foi desalocado , ele pode escrever um programa que testa o seu software para vazamentos de memória , ele pode conceber um esquema de gerenciamento de memória que lhe permite manter o controle de memória usado ou ele pode usar um programa de terceiros que testa se há vazamentos de memória. O que é um vazamento de memória ?
Um vazamento de memória é um uso de memória indesejado por um programa de computador, onde o programa aloca memória para o uso e não desalocar uma vez a memória já não está em uso. Este pedaço de memória deixarão de estar disponíveis para o programa de computador. Um programa que consuma a memória suficiente ao longo do tempo o suficiente pode fazer com que o sistema fique sem memória disponível , o que pode fazer com que o sistema de programa de computador ou ao fracasso. Vazamentos de memória também pode causar um sistema para abrandar a uma velocidade satisfatória, devido à goleada de memória. Programas que são executados por longos períodos de tempo, realizar muitas alocações ou alocar memória em pedaços grandes podem ser particularmente propensas a vazamentos de memória perigosos.
As Boas Práticas de codificação
A melhor maneira de garantir que o seu programa não está vazando memória é escrever bom código que gere de forma adequada os recursos do sistema . Certifique-se de que, para cada chamada de função que aloca memória , há uma chamada correspondente que desaloca memória. Algumas linguagens como Java , C #, VB.NET , e proporcionar a coleta de lixo , onde o sistema verifica regularmente que a memória alocada ainda está em uso . Embora esses sistemas não impedem completamente vazamentos de memória , é menos provável que eles vão ocorrer. Outras línguas, como C + + , permite a atribuição de pilha , onde um pedaço de memória é desalocado automaticamente uma vez que a variável que faz referência a ele sai do escopo . Usando a linguagem correta para a tarefa e manter boas práticas de escrita de software, muitos vazamentos de memória pode ser totalmente evitada .
Criar um Gerenciador de memória
Alguns computador programas exigem tanto a execução de código que a leitura por meio do programa para encontrar onde a memória vazou não é simplesmente viável. Nestes casos, pode fazer sentido para escrever um componente gerenciador de memória para o programa. O software , então, tem uma interface uniforme para a atribuição de quaisquer pedaços de memória , eo gerente mantém o controle de onde e como esses pedaços são alocados . Em sua forma mais simples , o gerente simplesmente fornece feedback, permitindo ao programador ver quanta memória é usada e quais componentes estão usando. Ele também pode fornecer a coleta de lixo e controlar a forma como a memória é alocada e desalocado , dando um programador apenas um lugar para procurar por vazamentos de memória , em vez de todo o código para todo o programa.
Criar um Programa de Teste
pode-se muitas vezes olhar para a memória usada por um programa com uma ferramenta do sistema, como o Windows Task Manager ou "top" no Unix /Linux para determinar se a memória está sendo divulgada . Isso nem sempre é evidência de um vazamento de memória, mas pode fornecer algum feedback inicial. Às vezes, é possível escrever um programa simples que testa os vários componentes de um pedaço de software para determinar se a memória está vazando. O programa de teste pode determinar dinamicamente ou ser dado conhecimento prévio da quantidade de memória de um programa de computador deve usar. Em seguida, ele assegura que a quantidade utilizada é a quantidade que deve ser usada . Se ocorrer um vazamento de memória , o programa de teste fornece feedback sobre como isso aconteceu , permitindo que o programador para consertar o vazamento.
Terceiros Software
Os programadores podem usar muitos terceiro -partidárias programas e bibliotecas para testar se o seu software está vazando memória. Na NET Framework Microsoft. , Pode-se permitir o teste de vazamento de memória usando as versões de depuração de funções de alocação de memória. No Linux , Unix e Mac , você pode usar ferramentas, como Valgrind , dmalloc e segurar + + para isolar um vazamento de memória. Muitos depuradores de memória também estão disponíveis para Windows. A melhor ferramenta para o trabalho depende do ambiente e do desenvolvimento de linguagem a ser utilizado, bem como das características específicas do programa para depurar , tais como o tamanho , as exigências de velocidade e o modo como ele interage com o sistema . Existem muitas ferramentas de que para escolher , e eles podem ser uma bênção para o programador frustrado cansado de procurar por esse último vazamento indescritível.