Diagnosetools und -daten
Die J9 VM (virtuelle Maschine) erzeugt verschiedene Typen von Diagnoseinformationen für die Analyse. Mit einer Reihe von Tools können diese Informationen anschließend verarbeitet und zur Fehlerbestimmung herangezogen werden.
Einige Diagnoseinformationen beziehen sich auf bestimmte Bereiche der Java™ Runtime Environment. Beispiel: Ein Heapspeicherauszug stellt nützliche Informationen zu Klassen- und Objektinstanzen im Java-Heapspeicher bereit, während die J9-Traceerstellung auf allgemeinere VM-Probleme ausgerichtet ist.
- Java Virtual Machine (VM)
- der native Code
- Java-Anwendungen
- eine Betriebssystem- oder Systemressource
- ein Subsystem, beispielsweise Datenbankcode
- Systemhardware
Möglicherweise benötigen Sie unterschiedliche Tools und Diagnoseinformationen, um die Probleme in den verschiedenen Bereichen zu beheben. Die hier beschriebenen Tools sind die Tools, die in der J9 VM integriert sind oder zur Verwendung mit der J9 VM verfügbar sind. Die meisten dieser Tools sind plattformübergreifende Tools. Viele andere Tools (beispielsweise Systemdebugger) werden von Hardware- oder Systemsoftwareanbietern bereitgestellt.
Zusammenfassung von Diagnoseinformationen
Eine aktive J9 VM schließt Mechanismen zur Erstellung unterschiedlicher Arten von Diagnosedaten ein, wenn unterschiedliche Ereignisse auftreten. In der Regel erfolgt die Erstellung dieser Daten unter Standardeinstellungen, kann aber gesteuert werden, indem die VM mit bestimmten Optionen (beispielsweise '-Xdump') gestartet wird. Ältere Versionen der VM haben die Erstellung von Diagnoseinformationen mithilfe von Umgebungsvariablen gesteuert. Sie können diese Umgebungsvariablen nach wie vor verwenden, sie sind allerdings nicht der bevorzugte Mechanismus.
Das Format der erstellten Diagnoseinformationen ist kennzeichnend für die J9 VM und kann sich zwischen Releases ändern.
- Java-Speicherauszugsdatei
- Die Java-Speicherauszugsdatei wird in einigen VMs manchmal als Javacore oder Threadspeicherauszug bezeichnet. Diese Speicherauszugsdatei liegt in einem lesbaren Format vor, das standardmäßig erstellt wird, wenn die VM aufgrund eines Betriebssystemsignals bzw. einer OutOfMemoryError-Ausnahmebedingung oder einer reservierte Tastenkombination unerwartet beendet wird, die ein Benutzer eingibt. Die Tastenkombination Strg + Umbruch unter Windows erzeugt beispielsweise eine Java-Speicherauszugsdatei. Sie können auch eine Java-Speicherauszugsdatei generieren, indem Sie eine Methode aus der Speicherauszugs-API (z. B. com.ibm.jvm.Dump.JavaDump()) innerhalb der Anwendung aufrufen. Eine Java-Speicherauszugsdatei fasst den Status der VM zum Zeitpunkt des Signalauftretens zusammen. Ein Großteil des Inhalts der Java-Speicherauszugsdatei ist spezifisch für die J9 Virtual Machine. Details finden Sie unter Java-Speicherauszug .
- Heapspeicherauszugsdatei
- Die VM kann auf Anforderung des Benutzers eine Heapspeicherauszugsdatei erstellen, indem aus der Anwendung heraus com.ibm.jvm.Dump.HeapDump() aufgerufen wird, oder standardmäßig, wenn die VM aufgrund einer OutOfMemoryError-Ausnahmebedingung beendet wird. Mit der Option -Xdump:heap können Sie die Feinsteuerung zur Erstellung einer Heapspeicherauszugsdatei angeben. Beispielsweise könnten Sie eine Heapspeicherauszugsdatei anfordern, nachdem eine bestimmte Anzahl vollständiger Garbage-Collections durchgeführt worden ist. Das Standardformat des Heapspeicherauszugs (PHD-Dateien) ist nicht lesbar. Es muss mit verfügbaren Tools wie beispielsweise Memory Analyzer verarbeitet werden. Weitere Informationen finden Sie unter Heapspeicherauszug verwenden .
- Systemspeicherauszugsdatei
- Systemspeicherauszugsdateien sind plattformspezifische Dateien, die Informationen zu den aktiven Prozessen, Threads und dem Systemspeicher enthalten. Diese Dateien werden auch als Kernspeicherauszüge auf Linux® -Plattformen bezeichnet. Systemspeicherauszugsdateien sind gewöhnlich groß. Systemspeicherauszugsdateien werden von der VM standardmäßig nur erstellt, wenn die VM unerwartet wegen eines Problems beim allgemeinen Zugriffsschutz oder eines größeren VM-Fehlers oder Systemfehlers ausfällt. Darüber hinaus können Sie eine Systemspeicherauszugsdatei mithilfe der Speicherauszugs-API anfordern. Sie können z. B. die Methode com.ibm.jvm.Dump.SystemDump() von der Anwendung aus aufrufen. Sie können die Option -Xdump:system verwenden, um Systemspeicherauszugsdateien zu erstellen, wenn andere Ereignisse auftreten.
- JIT-Speicherauszugsdatei
- Wenn ein Problem beim allgemeinen Zugriffsschutz (General Protection Fault, GPF) oder ein Abbruchereignis auftritt, erstellt der Just-in-time-Compiler (JIT-Compiler) eine kompakte binäre Speicherauszugsdatei mit Diagnosedaten, der bei der Behebung von Fehlern hilfreich sein kann. Weitere Informationen zur Position dieser Datei finden Sie unter Dateiposition.
- Garbage-Collection-Daten
- Eine mit der Option -verbose:gc gestartete VM erstellt Ausgaben im XML-Format, die zur Fehleranalyse im Garbage-Collector selbst oder zur Analyse von Fehlern im Design von Benutzeranwendungen verwendet werden können. Die Beschaffenheit und die Menge der vom Garbage-Collector erstellten Diagnoseinformationen werden von zahlreichen anderen Optionen beeinflusst. Weitere Informationen finden Sie unter Garbage-Collector-Diagnosedaten.
- Rückverfolgungsdaten
- J9 -Traceerstellung ermöglicht die Protokollierung von Ausführungspunkten im Java-Code und im internen VM-Code. Die Option -Xtrace ermöglicht die Steuerung der Anzahl und der Bereiche der Tracepunkte sowie die Beibehaltung der Größe und der Beschaffenheit der Tracepuffer. Die internen Tracepuffer zum Zeitpunkt eines Fehlers sind auch in einer Systemspeicherauszugsdatei verfügbar und es sind Tools verfügbar, mit denen sie aus der Datei extrahiert werden können. Im Allgemeinen werden Tracedaten in einem codierten Format in eine Datei geschrieben und anschließend werden die Daten von einem Formatierungsprogramm für Trace in ein lesbares Format konvertiert. Wenn kleine Tracemengen erstellt werden müssen und die Leistung kein Problem darstellt, kann der Trace jedoch an STDERR weitergeleitet werden, wo er vorformatiert wird. Weitere Informationen finden Sie unter Traceerstellung für Java-Anwendungen.
- Sonstige Daten
- Für die Erstellung von Diagnoseinformationen, die sich auf die folgenden J9-Komponenten beziehen, sind spezielle Optionen verfügbar:
- JIT (siehe JIT-oder AOT-Problem diagnostizieren)
- Laden von Klassen (siehe Probleme beim Laden von Klassen diagnostizieren)
- Gemeinsam genutzte Klassen (siehe Diagnosing problems with class data sharing in der Benutzerdokumentation zu OpenJ9 )
Plattformübergreifende Tools - Übersicht
- IBM® Überwachungs-und Diagnosetools
- IBM Monitoring and Diagnostic Tools ist eine Gruppe von grafisch orientierten Tools zum Überwachen von Anwendungen und zum Analysieren von Diagnosedaten. Diese Tools sind dafür ausgelegt, die Diagnoseaufgaben so schnell und einfach wie möglich zu machen. Weitere Informationen zu den Tools finden Sie in der Dokumentation zu IBM Monitoring and Diagnostic Tools .
- Plattformübergreifende Anzeigefunktion für Speicherauszüge
- Die systemübergreifende Anzeigefunktion für Speicherauszüge, jdmpview, verwendet die Speicherauszugsdateien, die das Betriebssystem generiert, um relevante Daten für die J9 -VM aufzulösen. Die Anzeigefunktion für Speicherauszüge versteht die VM und kann verwendet werden, um ihre internen Daten zu analysieren. Sie ist ein hilfreiches Tool zur Behebung von Fehlern, die zu einer unerwarteten Beendigung der VM führen. Da die Anzeigefunktion für Speicherauszüge plattformunabhängig ist, können Sie Speicherauszüge beliebiger Systeme analysieren. Kenntnisse zum Systemdebugger sind nicht erforderlich. Weitere Informationen hierzu finden Sie im Abschnitt Anzeigefunktion für Speicherauszüge.
- JVMTI-Tools
- Die JVM Tool Interface (JVMTI) ist eine Programmierschnittstelle für Tools, die die Java Virtual Machine Profiler Interface (JVMPI) und die Java Virtual Machine Debug Interface (JVMDI) ersetzt. Informationen zu JVMTI finden Sie unter Java Virtual Machine Tool Interface.
- JPDA-Tools
- Java Platform Debugging Architecture (JPDA) ist ein allgemeiner Standard für das Debugging einer Java VM. J9 ist mit JPDA vollständig kompatibel. Sie können einen beliebigen JPDA-Debugger mit der J9 VM verbinden. Da es sich um Debugger handelt, sind die JPDA-Tools am besten für ein Tracing von Anwendungsproblemen geeignet, deren Bedingungen reproduzierbar sind, z. B. Speicherlecks in Anwendungen oder Blockierungen. Ein Beispiel für ein JPDA-Tool ist der Debugger, der im Paket mit Eclipse for Java enthalten ist.
- DTFJ
- Das Diagnostic Tool Framework for Java (DTFJ) ist eine Java-Anwendungsprogrammierschnittstelle (API), die zur Unterstützung der Erstellung von Java-Diagnosetools verwendet wird. DTFJ kann eine Systemspeicherauszugsdatei untersuchen, um die interne Struktur der Java Virtual Machine zu analysieren. DTFJ wird in reinem Java-Code implementiert und Tools, die mit DTFJ geschrieben wurden, können plattformübergreifend sein. Daher kann eine Speicherauszugsdatei, die auf einem System generiert wurde, auf einem anderen (fernen und verfügbaren) System analysiert werden. Beispielsweise kann eine auf einer z/OS® -Maschine erstellte Speicherauszugsdatei auf einem Windows Thinkpad analysiert werden. Weitere Informationen finden Sie unter Diagnostic Tool Framework for Java verwenden.
- Traceformatierung
- Ein Trace ist ein wichtiges Diagnosetool. Die J9 VM ist in hohem Maße flexibel in Bezug auf die Komponenten, für die ein Trace durchgeführt werden soll, und auf den Zeitpunkt, an dem ein Trace stattfinden soll. Dies ermöglichst es Ihnen, den Trace so anzupassen, dass die Leistung dadurch nur relativ wenig beeinträchtigt wird. Die J9 -VM enthält auch viele eingebettete Tracepunkte. In diesem Release ist die maximale Tracestufe standardmäßig für einige Tracepunkte der Stufe 1 und für Ausnahmebedingungstracepunkte aktiviert. Über Befehlszeilenoptionen können Sie genau vorgeben, wofür ein Trace ausgeführt und wohin die Traceausgabe gesendet werden soll. Die Traceausgabe erfolgt im Allgemeinen im codierten Format; daher ist ein Formatierungsprogramm für Trace erforderlich, damit die Ausgabe angezeigt werden kann.