O que é o formato de ficheiro HPROF?
Arquivos com a extensão .hprof contêm heap memory dumps para programas executados na Java Virtual Machine (JVM). Os arquivos .hprof são gerados pelo agente de perfil HPROF integrado ao JDK. O formato é binário e pode se tornar muito grande - até mesmo vários GB - proporcional ao tamanho do heap da JVM no momento da captura. Como um artefato de diagnóstico, um arquivo .hprof pode ser excluído com segurança sem afetar o desempenho da aplicação.
Gerando arquivos .hprof. Os arquivos .hprof são normalmente gerados durante erros de memória Java. O gatilho mais comum é um OutOfMemoryError: adicionar a flag da JVM -XX:+HeapDumpOnOutOfMemoryError faz com que o runtime grave um dump automaticamente em caso de falha. Os dumps também podem ser criados sob demanda com jmap -dump:format=b,file=heap.hprof <pid> ou jcmd <pid> GC.heap_dump. Arquivos de dump de memória também podem ser criados automaticamente após o encerramento abrupto da JVM. Dispositivos Android também produzem arquivos .hprof, mas em um formato interno ligeiramente diferente que requer conversão com hprof-conv antes que as ferramentas Java padrão possam lê-los.
Analisando arquivos .hprof - problemas de memória de aplicação. Os arquivos .hprof podem ser analisados com o Eclipse Memory Analyzer Tool (MAT), uma aplicação GUI de código aberto mantida pela Eclipse Foundation. O MAT pode importar arquivos .hprof e analisá-los em busca de erros de OOM (Out of Memory), identificar vazamentos de memória e ajudar a otimizar o uso de memória da aplicação. O VisualVM, que vem com o JDK, é outro analisador amplamente utilizado. Para perfil de nível de produção, o JFR (Java Flight Recorder) é agora a abordagem preferida a partir do JDK 11; os heap dumps HPROF continuam sendo a ferramenta padrão para análise de vazamento de memória.
Segurança e proteção
RISCO: MEDIUMArquivos HPROF podem conter dados confidenciais: senhas, chaves privadas, tokens de API ou informações pessoais que estavam na memória heap da JVM no momento do dump. Trate os heap dumps como confidenciais; não envie dumps de produção para serviços de análise online sem revisar ou anonimizar o conteúdo primeiro. Os arquivos não são executáveis e não representam risco de execução de código.
Detalhes do formato
em resumo- Android ART Heap Dump - O Android Runtime gera arquivos .hprof com um formato compatível, mas não idêntico; converta com hprof-conv (Android SDK) antes de abrir no MAT/VisualVM.
Programas que abrem arquivos HPROF
Detalhes técnicos
especificação profunda| Codificação | Binário (principal); opção de texto ASCII legado também suportada |
| Ordem dos bytes | Big-endian |
| Contêiner | Formato de registro binário sequencial HPROF |
| String mágica | «JAVA PROFILE 1.0.1» ou «JAVA PROFILE 1.0.2» (terminada em nulo no deslocamento 0) |
| Versão do formato 1.0.1 | JDK 1.2-5; suporta heaps de até 2 GB |
| Versão do formato 1.0.2 | JDK 6+; adiciona a tag HEAP DUMP SEGMENT (0x1C) para heaps acima de 2 GB |
| Tamanho de arquivo típico | 50 MB - 20 GB (proporcional ao heap da JVM no momento do dump) |
| Estrutura do registro | Tag de 1 byte + deslocamento de timestamp de 4 bytes + comprimento do corpo de 4 bytes + corpo variável |
| Tags principais | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), strings UTF8, registros LOAD CLASS |
| Android HPROF | Usa a extensão .hprof, mas com formato ligeiramente diferente; requer hprof-conv antes da análise |
| Gatilho primário | Flag da JVM -XX:+HeapDumpOnOutOfMemoryError; também jmap e jcmd sob demanda |
| Lançado | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Versão mais recente | HPROF binary format 1.0.2 (JDK 6+) |
| Especificação | docs.oracle.com |
Conversões de HPROF
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos HPROF.