So verstehen Sie Java-Hotspot-Fehler

8

Jungs, wenn die JVM stürzt ab, schreibt ein Fehlerprotokoll hs_err_pid.log. Ich möchte herausfinden, was die JVM zum Absturz gebracht hat. Wie man diese Logs versteht, ist überall dokumentiert, wie dieses Log arrangiert ist. Ich habe versucht, im Internet zu suchen, aber ohne Erfolg: - (

Wir weisen auf die relevanten URLs hin. Danke.

    
Geek 12.05.2009, 05:40
quelle

3 Antworten

5

Sofern Sie keinen nativen Code (JNI) aufrufen, sollte JVM durch nichts in Ihrem Code zum Absturz gebracht werden. Daher ist die Stack-Trace-Information in dieser Protokolldatei wahrscheinlich für die meisten Entwickler nicht sehr nützlich. Das ist wahrscheinlich der Grund, warum es (zumindest äußerlich) nicht dokumentiert ist. Daher ist es wahrscheinlich am besten, einen Fehlerbericht wie in der Fehlermeldung vorgeschlagen zu erstellen.

Aber wenn Sie es wirklich verstehen wollen, Kohsuke's Blog hat die Ware. Wie gewöhnlich. :)

    
StaxMan 12.05.2009, 06:09
quelle
0

Suchen Sie zuerst nach der obersten Zeile, die ungefähr wie "ntdll.dll + 0x2000" aussieht.

Wenn der Hotspot in Ihrem nativen Code vorkommt (d. h. die DLL ist einer von Ihnen), dann finden Sie heraus, wie Sie Ihren Compiler dazu bringen, eine Liste von Zuordnungen von DLL-Offset zu Zeilennummer zu erstellen. Offensichtlich bedeutet das, dass Sie die neu kompilierte DLL erneut ausführen müssen und warten müssen, bis das Problem erneut auftritt.

Andernfalls sehen Sie, ob die Suche nach dieser bestimmten Zeile in Google etwas bringt, wobei zu berücksichtigen ist, dass derselbe Fehler eine ganze Reihe von Dingen bedeuten kann. Und sehen Sie, ob der DLL-Name so aussieht, als wäre er erkennbar, z. ein Druckertreibername, Grafiktreiber oder eine andere Komponente, die Sie bis zu einem bestimmten Anruf verfolgen können. Was auch immer diese Komponente ist, Sie können sie möglicherweise auf eine feste Version aktualisieren oder den betreffenden Anruf vermeiden. Wenn Sie nicht sicher sind, was die Komponente ist, kann es sich einfach um die "JVM" handeln, die Sie aktualisieren müssen. Es ist wahrscheinlich eine gute Idee, mindestens auf die neueste Version der neuesten Version zu aktualisieren.

In der Vergangenheit habe ich auch Bugs im JIT-Compiler gesehen, die vorübergehend gelöst werden können, indem ich sage, dass ich nicht versuchen soll, die betreffende Methode zu kompilieren. Wie ich mich recht erinnere, gibt es in diesen Fällen Hotspot-Fehler Hinweis darauf, welche Methode es war (möglicherweise nur der Speicherauszug des Java-Stacks), aber ich habe kein Beispiel zur Hand, um die Details abzurufen.

    
Neil Coffey 12.05.2009 06:26
quelle
0

das ist ziemlich nützlich: Ссылка

ok die erste anwser erwähnt bereits diese URL, vergiss

    
Persimmonium 12.05.2009 08:46
quelle

Tags und Links