Was ist das HPROF-Dateiformat?
Dateien mit der Erweiterung .hprof enthalten Heap-Speicherabzüge (Memory Dumps) für Programme, die auf der Java Virtual Machine (JVM) laufen. .hprof-Dateien werden vom in das JDK integrierten HPROF-Profiling-Agenten generiert. Das Format ist binär und kann sehr groß werden - sogar mehrere GB - proportional zur JVM-Heap-Größe zum Zeitpunkt der Erfassung. Als diagnostisches Artefakt kann eine .hprof-Datei sicher gelöscht werden, ohne die Anwendungsleistung zu beeinträchtigen.
Erzeugen von .hprof-Dateien. .hprof-Dateien werden typischerweise bei Java-Speicherfehlern generiert. Der häufigste Auslöser ist ein OutOfMemoryError: Das Hinzufügen des JVM-Flags -XX:+HeapDumpOnOutOfMemoryError veranlasst die Laufzeitumgebung, bei einem Fehler automatisch einen Dump zu schreiben. Dumps können auch bei Bedarf mit jmap -dump:format=b,file=heap.hprof <pid> oder jcmd <pid> GC.heap_dump erstellt werden. Speicherabzugsdateien können auch automatisch bei einem abrupten Abbruch der JVM erstellt werden. Android-Geräte erzeugen ebenfalls .hprof-Dateien, jedoch in einem etwas anderen internen Format, das eine Konvertierung mit hprof-conv erfordert, bevor Standard-Java-Tools sie lesen können.
Analysieren von .hprof-Dateien - Anwendungsspeicherprobleme. .hprof-Dateien können mit dem Eclipse Memory Analyzer Tool (MAT) analysiert werden, einer Open-Source-GUI-Anwendung der Eclipse Foundation. MAT kann .hprof-Dateien importieren und sie auf OOM-Fehler (Out of Memory) analysieren, Speicherlecks identifizieren und helfen, die Speichernutzung der Anwendung zu optimieren. VisualVM, das im JDK enthalten ist, ist ein weiterer weit verbreiteter Analyzer. Für das Profiling auf Produktionsebene ist JFR (Java Flight Recorder) ab JDK 11 der bevorzugte Ansatz; HPROF-Heap-Dumps bleiben das Standardwerkzeug für die Analyse von Speicherlecks.
Sicherheit
RISIKO: MEDIUMHPROF-Dateien können sensible Daten enthalten: Passwörter, private Schlüssel, API-Token oder persönliche Informationen, die sich zum Zeitpunkt des Dumps im JVM-Heap-Speicher befanden. Behandeln Sie Heap-Dumps vertraulich; laden Sie Produktions-Dumps nicht ohne vorherige Prüfung oder Anonymisierung des Inhalts zu Online-Analysediensten hoch. Dateien sind nicht ausführbar und stellen kein Risiko für die Codeausführung dar.
Formatdetails
kurz gefasst- Android ART Heap Dump - Die Android-Laufzeitumgebung generiert .hprof-Dateien mit einem kompatiblen, aber nicht identischen Format; konvertieren Sie diese mit hprof-conv (Android SDK), bevor Sie sie in MAT/VisualVM öffnen.
Programme zum Öffnen von HPROF-Dateien
Technische Details
technische Spezifikation| Kodierung | Binär (primär); veraltete ASCII-Textoption wird ebenfalls unterstützt |
| Byte-Reihenfolge | Big-endian |
| Container | Sequenzielles HPROF-Binärdatensatzformat |
| Magic String | „JAVA PROFILE 1.0.1“ oder „JAVA PROFILE 1.0.2“ (null-terminiert bei Offset 0) |
| Formatversion 1.0.1 | JDK 1.2-5; unterstützt Heaps bis zu 2 GB |
| Formatversion 1.0.2 | JDK 6+; fügt HEAP DUMP SEGMENT Tag (0x1C) für Heaps über 2 GB hinzu |
| Typische Dateigröße | 50 MB - 20 GB (proportional zum JVM-Heap beim Dump) |
| Datensatzstruktur | 1-Byte-Tag + 4-Byte-Zeitstempel-Offset + 4-Byte-Body-Länge + variabler Body |
| Wichtige Tags | HEAP DUMP (0x0C), HEAP DUMP SEGMENT (0x1C), UTF8-Strings, LOAD CLASS-Datensätze |
| Android HPROF | Verwendet die Erweiterung .hprof, aber ein etwas anderes Format; erfordert hprof-conv vor der Analyse |
| Hauptauslöser | -XX:+HeapDumpOnOutOfMemoryError JVM-Flag; auch jmap und jcmd bei Bedarf |
| Veröffentlicht | Java 1.2 (1998); binary format stabilised with JDK 1.6 |
| Neueste Version | HPROF binary format 1.0.2 (JDK 6+) |
| Spezifikation | docs.oracle.com |
HPROF-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu HPROF-Dateien.