Vad är filformatet HPROF?
Filer med filändelsen .hprof innehåller heap-minnesdumpar för program som körs på Java Virtual Machine (JVM). .hprof-filer genereras av profileringsagenten HPROF som är inbyggd i JDK. Formatet är binärt och kan bli mycket stort - till och med flera GB - proportionellt mot storleken på JVM-heapen vid tidpunkten för dumpen. Som en diagnostisk artefakt kan en .hprof-fil raderas säkert utan att det påverkar applikationens prestanda.
Generera .hprof-filer. .hprof-filer genereras vanligtvis vid minnesfel i Java. Den vanligaste utlösaren är ett OutOfMemoryError: genom att lägga till JVM-flaggan -XX:+HeapDumpOnOutOfMemoryError skriver körningsmiljön automatiskt en dump vid fel. Dumpar kan också skapas vid behov med jmap -dump:format=b,file=heap.hprof <pid> eller jcmd <pid> GC.heap_dump. Minnesdumpsfiler kan också skapas automatiskt vid plötslig avslutning av JVM. Android-enheter producerar också .hprof-filer, men i ett något annorlunda internt format som kräver konvertering med hprof-conv innan vanliga Java-verktyg kan läsa dem.
Analysera .hprof-filer - minnesproblem i applikationer. .hprof-filer kan analyseras med Eclipse Memory Analyzer Tool (MAT), en GUI-applikation med öppen källkod som drivs av Eclipse Foundation. MAT kan importera .hprof-filer och analysera dem för OOM (Out of Memory)-fel, identifiera minnesläckor och hjälpa till att optimera applikationens minnesanvändning. VisualVM, som medföljer JDK, är en annan flitigt använd analysator. För profilering på produktionsnivå är JFR (Java Flight Recorder) numera den föredragna metoden från JDK 11 och framåt; HPROF-heapdumpar förblir standardverktyget för analys av minnesläckor.
Säkerhet & trygghet
RISK: MEDIUMHPROF-filer kan innehålla känsliga data: lösenord, privata nycklar, API-tokens eller personlig information som fanns i JVM-heap-minnet vid tidpunkten för dumpen. Hantera heapdumpar som konfidentiella; ladda inte upp produktionsdumpar till online-analystjänster utan att först granska eller anonymisera innehållet. Filerna är inte körbara och utgör ingen risk för kodexekvering.
Formatdetaljer
i ett nötskal- Android ART Heap Dump - Android Runtime genererar .hprof-filer med ett kompatibelt men inte identiskt format; konvertera med hprof-conv (Android SDK) innan de öppnas i MAT/VisualVM.
Program som öppnar HPROF-filer
Tekniska detaljer
djup specifikation| Kodning | Binär (primär); alternativ för äldre ASCII-text stöds också |
| Byteordning | Big-endian |
| Container | Sekventiellt HPROF binärt postformat |
| Magic string | «JAVA PROFILE 1.0.1» eller «JAVA PROFILE 1.0.2» (null-terminerad vid offset 0) |
| Formatversion 1.0.1 | JDK 1.2-5; stöder heapar upp till 2 GB |
| Formatversion 1.0.2 | JDK 6+; lägger till taggen HEAP DUMP SEGMENT (0x1C) för heapar över 2 GB |
| Typisk filstorlek | 50 MB - 20 GB (proportionell mot JVM-heap vid dumpning) |
| Poststruktur | 1-byte tagg + 4-byte tidsstämpel-offset + 4-byte kroppslängd + variabel kropp |
| Nyckeltaggar | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), UTF8-strängar, LOAD CLASS-poster |
| Android HPROF | Använder filändelsen .hprof men ett något annorlunda format; kräver hprof-conv före analys |
| Primär utlösare | JVM-flaggan -XX:+HeapDumpOnOutOfMemoryError; även jmap och jcmd vid behov |
| Släppt | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Senaste version | HPROF binary format 1.0.2 (JDK 6+) |
| Specifikation | docs.oracle.com |
HPROF-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om HPROF-filer.