Hva er HPROF-filformatet?
Filer med filendelsen .hprof inneholder heap-minnedumper for programmer som kjører på Java Virtual Machine (JVM). .hprof-filer genereres av HPROF-profileringsagenten som er innebygd i JDK. Formatet er binært og kan bli svært stort - selv flere GB - proporsjonalt med JVM-ens heap-størrelse på tidspunktet for opptaket. Som en diagnostisk artefakt kan en .hprof-fil trygt slettes uten at det påvirker applikasjonens ytelse.
Generering av .hprof-filer. .hprof-filer genereres vanligvis under minnefeil i Java. Den vanligste utløseren er en OutOfMemoryError: ved å legge til JVM-flagget -XX:+HeapDumpOnOutOfMemoryError vil kjøretidsmiljøet skrive en dump automatisk ved feil. Dumper kan også opprettes ved behov med jmap -dump:format=b,file=heap.hprof <pid> eller jcmd <pid> GC.heap_dump. Minnedump-filer kan også opprettes automatisk ved brå avslutning av JVM. Android-enheter produserer også .hprof-filer, men i et litt annet internt format som krever konvertering med hprof-conv før standard Java-verktøy kan lese dem.
Analysering av .hprof-filer - minneproblemer i applikasjoner. .hprof-filer kan analyseres med Eclipse Memory Analyzer Tool (MAT), en åpen kildekode-applikasjon med grafisk brukergrensesnitt fra Eclipse Foundation. MAT kan importere .hprof-filer og analysere dem for OOM (Out of Memory)-feil, identifisere minnelekkasjer og hjelpe til med å optimalisere applikasjonens minnebruk. VisualVM, som følger med JDK, er en annen mye brukt analysator. For profilering på produksjonsnivå er JFR (Java Flight Recorder) nå den foretrukne tilnærmingen fra JDK 11 og utover; HPROF-heapdumper forblir standardverktøyet for analyse av minnelekkasjer.
Sikkerhet og trygghet
RISIKO: MEDIUMHPROF-filer kan inneholde sensitive data: passord, private nøkler, API-tokens eller personlig informasjon som var i JVM-ens heap-minne på dump-tidspunktet. Behandle heap-dumper som konfidensielle; ikke last opp produksjonsdumper til online analysetjenester uten å gjennomgå eller anonymisere innholdet først. Filene er ikke kjørbare og utgjør ingen risiko for kodeutførelse.
Formatdetaljer
i et nøtteskall- Android ART Heap Dump - Android Runtime genererer .hprof-filer med et kompatibelt, men ikke identisk format; konverter med hprof-conv (Android SDK) før åpning i MAT/VisualVM.
Programmer som åpner HPROF-filer
Tekniske detaljer
dyp spesifikasjon| Koding | Binær (primær); eldre ASCII-tekstalternativ støttes også |
| Byterekkefølge | Big-endian |
| Beholder | Sekvensielt HPROF binært postformat |
| Magic string | «JAVA PROFILE 1.0.1» eller «JAVA PROFILE 1.0.2» (null-terminert ved offset 0) |
| Formatversjon 1.0.1 | JDK 1.2-5; støtter heap opp til 2 GB |
| Formatversjon 1.0.2 | JDK 6+; legger til HEAP DUMP SEGMENT-tag (0x1C) for heap over 2 GB |
| Typisk filstørrelse | 50 MB - 20 GB (proporsjonalt med JVM-heap ved dump-tidspunkt) |
| Poststruktur | 1-byte tag + 4-byte tidsstempel-offset + 4-byte kroppslengde + variabel kropp |
| Nøkkel-tagger | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), UTF8-strenger, LOAD CLASS-poster |
| Android HPROF | Bruker .hprof-endelse, men et litt annerledes format; krever hprof-conv før analyse |
| Primær utløser | -XX:+HeapDumpOnOutOfMemoryError JVM-flagg; også jmap og jcmd ved behov |
| Utgitt | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Siste versjon | HPROF binary format 1.0.2 (JDK 6+) |
| Spesifikasjon | docs.oracle.com |
HPROF-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om HPROF-filer.