Die Protokolldatei eines JVM-Absturzes enthält alle möglichen nützlichen Informationen zum Debuggen, z. B. gemeinsam genutzte Bibliotheken und die gesamte Umgebung. Kann ich die JVM zwingen, eines dieser Programme programmatisch zu generieren? entweder durch Ausführen von Code, der es abstürzt oder auf andere Weise? Oder alternativ Zugriff auf die gleiche Information auf andere Weise?Kann ich die Generierung einer JVM-Crash-Protokolldatei erzwingen?
Antwort
Sie können versuchen, einen OutOfMemoryError zu werfen und das Argument -XX: + HeapDumpOnOutOfMemoryError jvm hinzuzufügen. Dies ist ab 1.6 neu, ebenso wie die anderen von McDowell vorgeschlagenen Tools. http://blogs.oracle.com/watt/resource/jvm-options-list.html
Ich bin ziemlich sicher, dass dies mit dem IBM JDK getan werden kann, da ich vor einiger Zeit mit ihrem Stack Analyzer herumspielte. Eine Option, um den Speicherauszug zu erzwingen, würde nur eine outOfMemoryException verursachen.
Diese Tools können einige Hinweise geben http://www.ibm.com/developerworks/java/library/j-ibmtools1/
Der Link scheint über ein Tool zu sein, das nur für IBM-Kunden verfügbar ist, von denen ich keine bin. – DJClayworth
Werfen Sie einen Blick auf die JDK Development Tools, insbesondere die Troubleshooting Tools für Dumping den Haufen, Druck Config-Info, und so weiter.
Von den Tools scheint ['jstack'] (http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstack.html) am vielversprechendsten zu sein, in der Form' jstack -l - F -m
Oder siehe https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html für Oracle Java 8 (vorherige Links sind 6, aber wahrscheinlich nicht sehr unterschiedlicher Inhalt). – PJTraill
- 1. Wie kann ich die WCF-Client-Code-Generierung anpassen?
- 2. Kann ich eine zusätzliche Ausführung einer geplanten Ausführung erzwingen?
- 3. Wie kann ich die Eindeutigkeit von Verbindungen in MySQL erzwingen?
- 4. Kann ich die Archivierung von Nlog-Dateien erzwingen
- 5. Kann ich die explizite Verwendung von @Override erzwingen?
- 6. Wie kann ich die Verwendung des Namespace-Präfixes erzwingen?
- 7. Kann ich die Beendigung einer Goroutine erzwingen, ohne darauf zu warten, dass sie zurückkehrt?
- 8. Kann die Pivot-Tabelle-Berechnung für .xlsx-Generierung nicht auslösen
- 9. Wie rechenintensiv ist die Generierung einer Zufallszahl in C++?
- 10. Wie deaktiviere ich die Code-Generierung in meinem Test-Plugin?
- 11. Wie kann die Generierung von Zufallszahlen auf 12 begrenzt werden?
- 12. Wie implementiere ich die Generierung mehrerer Argumente mit FsCheck?
- 13. Laden/Entladen einer Ansicht erzwingen
- 14. Eine Iteration einer Schleife erzwingen
- 15. Wie kann ich einen Kompilierfehler in C++ erzwingen?
- 16. Kann ich das Einwickeln aller Artikel mit CSS flexbox erzwingen?
- 17. Kann ich beim HTML-Drucken einen Seitensprung erzwingen?
- 18. Erzwingen einer Datei zum Download
- 19. Kann ich die automatische Generierung von Ereignishandlern in Visual Studio anpassen?
- 20. Wie kann ich eine bestimmte Version des .NET Framework erzwingen?
- 21. Wie verlangsame ich die Generierung von Threads in Java?
- 22. Wie deaktiviere ich die Generierung von Groovy Accessoren?
- 23. Generierung einer global eindeutigen ID in Java
- 24. Wie kann ich einen Zeilenumbruch in Rmarkdowns Titel erzwingen?
- 25. Wie kann ich URL-Konventionen für meine Webanwendung erzwingen?
- 26. Wie kann ich das Entladen eines Perl-Moduls erzwingen?
- 27. VB.Net Tastaturkürzel zur automatischen Generierung einer Eigenschaft
- 28. Kann nicht erzwingen Wert von nicht-optionalen Typ 'UIImage' erzwingen
- 29. Automatische Generierung einer Schnittstellenimplementierung in C#?
- 30. Sollte nicht __metaclass__ die Verwendung einer Metaklasse in Python erzwingen?
Siehe auch http://stackoverflow.com/questions/5576672/force-or-generate-jvm-core-dump – jhclark
Der Link ist tot (Sie könnten Oracle danken). – willome
Diese andere Frage scheint für einen Core-Dump zu sein, den man an den JVM-Implementierer senden könnte, z.B. IBM, anstatt ein 'hs_err_pid * .log'. – PJTraill