Pergunta

Eu tenho um servidor de produção em execução com o seguinte sinalizador: - XX: + HeapDumpOnOutOfMemoryError

Na noite passada, ele gerou um arquivo java-38942.hprof quando o nosso servidor encontrou um erro de pilha. Acontece que os desenvolvedores do sistema sabia da bandeira, mas não há maneira de obter qualquer informação útil a partir dele.

Todas as idéias?

Foi útil?

Solução

Se você quer uma ferramenta bastante avançado para fazer alguma cutucando sério ao redor, olhar para o projeto Memory Analyzer no Eclipse, contribuíram para eles pela SAP.

Algumas das coisas que você pode fazer é mente-blowingly bom para encontrar vazamentos de memória, etc -. Incluindo executando uma forma de SQL limitada (QVG) contra os objetos na memória, i

SELECIONAR toString (firstName) FROM com.yourcompany.somepackage.User

Totalmente brilhante.

Outras dicas

Você pode usar jhat , The Java Heap Analysis Tool, fornecidas por padrão com o JDK. É linha de comando, mas começa um servidor web / browser que você usa para examinar a memória. Não é o mais user friendly, mas pelo menos está já instalado a maioria dos lugares você irá. Uma visão muito útil é o link "pilha histograma" na parte inferior.

ex: jhat -port 7401 -J-Xmx4G dump.hprof

jhat pode executar QVG "nos dias de hoje", bem como (ligação inferior "executar QVG")

Você também pode usar HeapWalker do Netbeans Profiler ou o < a href = "https://visualvm.github.io/" rel = "noreferrer"> Visual VM stand-alone ferramenta. Visual VM é uma boa alternativa para jhat como é ficar sozinho, mas é muito mais fácil de usar do que jhat.

Você precisa de Java 6 + para utilizar plenamente Visual VM.

Apenas obter o Eclipse Memória Analyzer . Não há nada melhor lá fora, e é grátis.

jhat só é utilizável para "aplicações brinquedo"

YourKit Java Profiler parece lidar com eles também.

Se você quiser fazer uma análise personalizada de sua heapdump então há:

Esta biblioteca é rápido, mas você terá que escrever o seu código de análise em Java.

De docs:

  • Não cria quaisquer arquivos temporários em disco para despejo de pilha processo
  • Pode trabalhar diretamente GZ compactado heap dumps
  • HeapPath notação
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top