Che cos'è il formato di file HPROF?
I file con l'estensione .hprof contengono dump della memoria heap per i programmi in esecuzione sulla Java Virtual Machine (JVM). I file .hprof sono generati dall'agente di profilazione HPROF integrato nel JDK. Il formato è binario e può diventare molto grande - anche diversi GB - in proporzione alla dimensione dell'heap della JVM al momento dell'acquisizione. Come artefatto diagnostico, un file .hprof può essere eliminato in sicurezza senza influire sulle prestazioni dell'applicazione.
Generazione di file .hprof. I file .hprof vengono solitamente generati durante gli errori di memoria Java. L'attivatore più comune è un OutOfMemoryError: l'aggiunta del flag JVM -XX:+HeapDumpOnOutOfMemoryError fa sì che il runtime scriva automaticamente un dump in caso di errore. I dump possono anche essere creati su richiesta con jmap -dump:format=b,file=heap.hprof <pid> o jcmd <pid> GC.heap_dump. I file di dump della memoria possono anche essere creati automaticamente in caso di terminazione improvvisa della JVM. Anche i dispositivi Android producono file .hprof, ma in un formato interno leggermente diverso che richiede la conversione con hprof-conv prima che gli strumenti Java standard possano leggerli.
Analisi dei file .hprof - problemi di memoria dell'applicazione. I file .hprof possono essere analizzati con Eclipse Memory Analyzer Tool (MAT), un'applicazione GUI open source ospitata dalla Eclipse Foundation. MAT può importare file .hprof e analizzarli per errori OOM (Out of Memory), identificare perdite di memoria e aiutare a ottimizzare l'uso della memoria dell'applicazione. VisualVM, incluso nel JDK, è un altro analizzatore ampiamente utilizzato. Per la profilazione a livello di produzione, JFR (Java Flight Recorder) è ora l'approccio preferito a partire da JDK 11; i dump dell'heap HPROF rimangono lo strumento standard per l'analisi delle perdite di memoria.
Sicurezza e incolumità
RISCHIO: MEDIUMI file HPROF possono contenere dati sensibili: password, chiavi private, token API o informazioni personali che si trovavano nella memoria heap della JVM al momento del dump. Tratta i dump dell'heap come riservati; non caricare dump di produzione su servizi di analisi online senza prima averne revisionato o anonimizzato i contenuti. I file non sono eseguibili e non comportano rischi di esecuzione di codice.
Dettagli del formato
in sintesi- Android ART Heap Dump - Android Runtime genera file .hprof con un formato compatibile ma non identico; convertili con hprof-conv (Android SDK) prima di aprirli in MAT/VisualVM.
Programmi che aprono file HPROF
Dettagli tecnici
specifiche approfondite| Codifica | Binario (principale); supportata anche l'opzione legacy di testo ASCII |
| Ordine dei byte | Big-endian |
| Contenitore | Formato record binario HPROF sequenziale |
| Stringa magica | «JAVA PROFILE 1.0.1» o «JAVA PROFILE 1.0.2» (terminata da null all'offset 0) |
| Versione formato 1.0.1 | JDK 1.2-5; supporta heap fino a 2 GB |
| Versione formato 1.0.2 | JDK 6+; aggiunge il tag HEAP DUMP SEGMENT (0x1C) per heap superiori a 2 GB |
| Dimensione tipica del file | 50 MB - 20 GB (proporzionale all'heap della JVM al momento del dump) |
| Struttura del record | tag da 1 byte + offset timestamp da 4 byte + lunghezza corpo da 4 byte + corpo variabile |
| Tag principali | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), stringhe UTF8, record LOAD CLASS |
| Android HPROF | Utilizza l'estensione .hprof ma un formato leggermente diverso; richiede hprof-conv prima dell'analisi |
| Attivatore primario | Flag JVM -XX:+HeapDumpOnOutOfMemoryError; anche jmap e jcmd su richiesta |
| Rilasciato | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Ultima versione | HPROF binary format 1.0.2 (JDK 6+) |
| Specifica | docs.oracle.com |
Conversioni HPROF
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file HPROF.