Programação  
 
Conhecimento computador >> Programação >> Programação em Java >> 
HashMap : Como remover a causa de um vazamento de memória
As bibliotecas padrão para a linguagem de programação Java fornecer o HashMap classe. Um HashMap é um mapeamento de chaves para valores, onde as chaves e valores podem pertencer a qualquer classe Java. Entre outras operações , HashMap fornece um método para encontrar o valor associado a uma determinada chave e adicionar e excluir ( chave, valor ) pares do HashMap. HashMaps são uma fonte comum de erros de vazamento de memória em programas em Java : as instâncias de alguma classe são gerenciados corretamente pelo código, mas um erro de programação impede que eles sejam excluídos do HashMap quando eles não são mais necessários . Porque há pelo menos uma referência excelente para aqueles objetos órfãos , coletor de lixo do Java não pode recuperar sua memória, de modo que o tempo de execução Java , eventualmente, ficar sem memória heap. Instruções
1

Execute o aplicativo Java com a ferramenta profiler ( hprof ) ativado e perfis heap madeireiras. A forma exacta de fazer isso depende do sistema operativo . Por exemplo, no Linux , inicie o aplicativo da seguinte forma:

java- Xrunhprof : arquivo = MyLog.txt , montão = locais myApp

Substituir myApp pelo nome do seu aplicativo Java. Esta invocação inicia a máquina virtual Java (JVM) em modo de perfil ; . JVM grava a saída do profiler para arquivar MyLog.txt
2

Faça o seu processo de candidatura alguma carga de trabalho, para que os objetos (em em particular , HashMaps ) são atribuídos e descartado . Tome um instantâneo do estado heap. Por exemplo, no Linux , o profiler gera um instantâneo do estado do monte quando você executa :

matar -3 jvmPID

Substituir jvmPID com o identificador do processo da instância de JVM que está executando o aplicativo . Hprof acrescenta um instantâneo da pilha para o conteúdo atual do arquivo MyLog.txt .
3

Faça o seu processo de aplicação mais ou menos a mesma quantidade de carga de trabalho para que mais objetos são criados e lixo recolhidas . Tome um outro instantâneo do estado do heap como na Etapa 2.
4

Compare as duas fotografias tiradas nos Passos 2 e 3 . Em particular, olhar para as linhas entre " SITES BEGIN " e " SITES fim. " Identificar as classes cujos objetos têm aumentado mais em número entre as duas imagens , esses são os responsáveis ​​por vazamentos de memória , como a carga processada pelo seu aplicativo foi mais ou menos constante ao longo dos dois instantâneos
5

Examine . os instantâneos para identificar as partes dos objetos de código alocação que não são liberados quando necessário . Para isso, concentrar-se nas linhas que começam com " TRACE " que têm um evento " " na seguinte linha de snapshot , para cada uma das classes identificadas no Passo 4.
6

Incluir o faltando exclusões de referências para as classes de problemas para as partes de seu código identificados na Etapa 5. Os vazamentos de memória não mais acontecer.

Anterior :

Próximo : No
  Os artigos relacionados
·Como criar um Path AVD no Android 
·Como executar o CLS De Java 
·A diferença entre JSF e JSP 
·Como adicionar uma perspectiva Server para Eclipse 
·Applet de Comunicação Applet 
·Como multiplicar dois números inteiros de vários díg…
·Como passar por referência em Java 
·Como converter um inteiro em uma String em Java 
·Como converter números para Inglês em Java 
·Como imprimir texto em um Applet Java 
  Artigos em destaque
·Como copiar fluxos de saída de entrada em Java 
·Básico programação de ajuda 
·Quais são as estruturas fluxograma Diferentes 
·Quais são CSS Templates 
·Conceitos de Java : Laboratório Lista Linked 
·Como exibir nomes de objetos em MATLAB 
·Como adicionar decimais em C + + 
·Como verificar se um arquivo existe Usando VBScript 
·Como adicionar dois inteiros grandes em C + + 
·Como excluir duplicatas de uma matriz em Java 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados