Wat is het HPROF-bestandsformaat?
Bestanden met de extensie .hprof bevatten heap memory dumps voor programma's die draaien op de Java Virtual Machine (JVM). .hprof-bestanden worden gegenereerd door de HPROF-profiling agent die in de JDK is ingebouwd. Het formaat is binair en kan zeer groot worden - zelfs enkele GB - evenredig met de grootte van de JVM-heap op het moment van vastleggen. Als diagnostisch artefact kan een .hprof-bestand veilig worden verwijderd zonder de prestaties van de applicatie te beïnvloeden.
Genereren van .hprof-bestanden. .hprof-bestanden worden doorgaans gegenereerd tijdens Java-geheugenfouten. De meest voorkomende trigger is een OutOfMemoryError: het toevoegen van de JVM-vlag -XX:+HeapDumpOnOutOfMemoryError zorgt ervoor dat de runtime automatisch een dump wegschrijft bij een fout. Dumps kunnen ook op aanvraag worden gemaakt met jmap -dump:format=b,file=heap.hprof <pid> of jcmd <pid> GC.heap_dump. Geheugendumpbestanden kunnen ook automatisch worden aangemaakt bij een abrupte beëindiging van de JVM. Android-apparaten produceren ook .hprof-bestanden, maar in een iets ander intern formaat dat conversie met hprof-conv vereist voordat standaard Java-tools ze kunnen lezen.
Analyseren van .hprof-bestanden - geheugenproblemen in applicaties. .hprof-bestanden kunnen worden geanalyseerd met de Eclipse Memory Analyzer Tool (MAT), een open-source GUI-applicatie van de Eclipse Foundation. MAT kan .hprof-bestanden importeren en analyseren op OOM (Out of Memory)-fouten, geheugenlekken identificeren en helpen bij het optimaliseren van het geheugengebruik van de applicatie. VisualVM, gebundeld met de JDK, is een andere veelgebruikte analyzer. Voor profilering op productieniveau is JFR (Java Flight Recorder) nu de voorkeursaanpak vanaf JDK 11; HPROF-heapdumps blijven de standaardtool voor de analyse van geheugenlekken.
Beveiliging & veiligheid
RISICO: MEDIUMHPROF-bestanden kunnen gevoelige gegevens bevatten: wachtwoorden, privésleutels, API-tokens of persoonlijke informatie die zich op het moment van de dump in het JVM-heapgeheugen bevond. Behandel heap-dumps als vertrouwelijk; upload geen productiedumps naar online analysediensten zonder de inhoud eerst te controleren of te anonimiseren. Bestanden zijn niet uitvoerbaar en vormen geen risico voor code-executie.
Formaatdetails
in een notendop- Android ART Heap Dump - Android Runtime genereert .hprof-bestanden met een compatibel maar niet identiek formaat; converteer met hprof-conv (Android SDK) voordat u ze opent in MAT/VisualVM.
Programma's die HPROF-bestanden openen
Technische details
diepe specificaties| Codering | Binair (primair); legacy ASCII-tekstoptie wordt ook ondersteund |
| Byte-volgorde | Big-endian |
| Container | Sequentieel HPROF binair recordformaat |
| Magic string | „JAVA PROFILE 1.0.1” of „JAVA PROFILE 1.0.2” (null-terminated op offset 0) |
| Formaatversie 1.0.1 | JDK 1.2-5; ondersteunt heaps tot 2 GB |
| Formaatversie 1.0.2 | JDK 6+; voegt HEAP DUMP SEGMENT tag (0x1C) toe voor heaps groter dan 2 GB |
| Typische bestandsgrootte | 50 MB - 20 GB (evenredig met JVM-heap op moment van dump) |
| Recordstructuur | 1-byte tag + 4-byte timestamp offset + 4-byte body lengte + variabele body |
| Belangrijkste tags | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), UTF8 strings, LOAD CLASS records |
| Android HPROF | Gebruikt .hprof-extensie maar een iets ander formaat; vereist hprof-conv vóór analyse |
| Primaire trigger | -XX:+HeapDumpOnOutOfMemoryError JVM-vlag; ook jmap en jcmd op aanvraag |
| Uitgebracht | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Laatste versie | HPROF binary format 1.0.2 (JDK 6+) |
| Specificatie | docs.oracle.com |
HPROF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over HPROF-bestanden.