Hvad er HPROF-filformatet?
Filer med filendelsen .hprof indeholder heap memory dumps for programmer, der kører på Java Virtual Machine (JVM). .hprof-filer genereres af HPROF-profileringsagenten, der er indbygget i JDK. Formatet er binært og kan blive meget stort - selv flere GB - proportionalt med JVM-heapstørrelsen på tidspunktet for optagelsen. Som en diagnostisk artefakt kan en .hprof-fil slettes sikkert uden at påvirke applikationens ydeevne.
Generering af .hprof-filer. .hprof-filer genereres typisk under Java-hukommelsesfejl. Den mest almindelige udløser er en OutOfMemoryError: Tilføjelse af JVM-flaget -XX:+HeapDumpOnOutOfMemoryError får runtime-miljøet til automatisk at skrive et dump ved fejl. Dumps kan også oprettes efter behov med jmap -dump:format=b,file=heap.hprof <pid> eller jcmd <pid> GC.heap_dump. Hukommelsesdump-filer kan også oprettes automatisk ved brat JVM-afslutning. Android-enheder producerer også .hprof-filer, men i et lidt andet internt format, der kræver konvertering med hprof-conv, før standard Java-værktøjer kan læse dem.
Analyse af .hprof-filer - hukommelsesproblemer i applikationer. .hprof-filer kan analyseres med Eclipse Memory Analyzer Tool (MAT), en open source GUI-applikation hostet af Eclipse Foundation. MAT kan importere .hprof-filer og analysere dem for OOM (Out of Memory)-fejl, identificere hukommelseslækager og hjælpe med at optimere applikationens hukommelsesforbrug. VisualVM, der følger med JDK, er en anden udbredt analysator. Til profilering på produktionsniveau er JFR (Java Flight Recorder) nu den foretrukne tilgang fra JDK 11 og frem; HPROF heap dumps forbliver standardværktøjet til analyse af hukommelseslækager.
Sikkerhed og tryghed
RISIKO: MEDIUMHPROF-filer kan indeholde følsomme data: adgangskoder, private nøgler, API-tokens eller personlige oplysninger, der var i JVM-heap-hukommelsen på dump-tidspunktet. Behandl heap dumps som fortrolige; upload ikke produktions-dumps til online analysetjenester uden at gennemgå eller anonymisere indholdet først. Filerne er ikke eksekverbare og udgør ingen risiko for kodeeksekvering.
Formatdetaljer
kort fortalt- Android ART Heap Dump - Android Runtime genererer .hprof-filer med et kompatibelt, men ikke identisk format; konverter med hprof-conv (Android SDK), før de åbnes i MAT/VisualVM.
Programmer der åbner HPROF-filer
Tekniske detaljer
dyb specifikation| Kodning | Binær (primær); ældre ASCII-tekstindstilling understøttes også |
| Byte-rækkefølge | Big-endian |
| Container | Sekventielt HPROF binært postformat |
| Magic string | «JAVA PROFILE 1.0.1» eller «JAVA PROFILE 1.0.2» (null-termineret ved offset 0) |
| Formatversion 1.0.1 | JDK 1.2-5; understøtter heaps op til 2 GB |
| Formatversion 1.0.2 | JDK 6+; tilføjer HEAP DUMP SEGMENT-tag (0x1C) for heaps over 2 GB |
| Typisk filstørrelse | 50 MB - 20 GB (proportional med JVM-heap ved dump-tidspunkt) |
| Poststruktur | 1-byte tag + 4-byte tidsstempel-offset + 4-byte kropslængde + variabel krop |
| Nøgle-tags | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), UTF8-strenge, LOAD CLASS-poster |
| Android HPROF | Bruger .hprof-filendelse, men et lidt andet format; kræver hprof-conv før analyse |
| Primær udløser | -XX:+HeapDumpOnOutOfMemoryError JVM-flag; også jmap og jcmd efter behov |
| Udgivet | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Seneste version | HPROF binary format 1.0.2 (JDK 6+) |
| Specifikation | docs.oracle.com |
HPROF-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om HPROF-filer.