2008-09-26 8 views
27

Wenn eine Java VM mit einer EXCEPTION_ACCESS_VIOLATION abstürzt und eine Datei hs_err_pidXXX.log erzeugt, was bedeutet das? Der Fehler selbst ist im Grunde eine Nullzeiger-Ausnahme. Wird es immer durch einen Fehler in der JVM verursacht, oder gibt es andere Ursachen wie fehlerhafte Hardware- oder Softwarekonflikte?Mögliche Ursachen für Java VM EXCEPTION_ACCESS_VIOLATION?

Edit: Es gibt eine native Komponente, das ist eine SWT-Anwendung auf Win32.

+1

Machst du irgendetwas mit nativem Code, wie Java3D oder etwas? –

Antwort

14

Meistens ist dies ein Fehler in der VM. Aber es kann von jedem nativen Code (z. B. JNI-Aufrufe) verursacht werden.

Die Datei hs_err_pidXXX.log sollte einige Informationen darüber enthalten, wo das Problem aufgetreten ist.

Sie können auch den Abschnitt "Heap" in der Datei überprüfen. Viele der VM-Fehler werden durch die Speicherbereinigung verursacht (besonders in älteren VMs). Dieser Abschnitt sollte Ihnen anzeigen, ob der Müll zum Zeitpunkt des Absturzes ausgeführt wurde. Auch dieser Abschnitt zeigt, wenn einige Teile des Heaps gefüllt sind (die Prozentzahlen).

Die VM ist auch viel wahrscheinlicher in einer Situation mit wenig Speicher als sonst.

+0

Wie überprüft man, ob der Garbage Collector während des Absturzes ausgeführt wurde? –

1

Als Erstes sollten Sie Ihre JVM auf den neuesten Stand bringen.

Können Sie das Problem wiederholen? Oder scheint es zufällig zu passieren? Wir hatten kürzlich ein Problem, bei dem unsere JVM zu zufälligen Zeiten überall hin zusammenbrach. Es stellte sich heraus, dass es ein Hardwareproblem war. Wir haben die Laufwerke in einen neuen Server gesteckt und es ist komplett verschwunden.

Fazit, die JVM sollte nie abstürzen, wie das oben erwähnte Plakat, wenn Sie keine JNI tun, dann mein Bauch ist, dass Sie ein Hardwareproblem haben.

+0

Könnten Sie bitte beschreiben, welches genaue Problem das war? Ich kämpfe mit solchen Fehlern und denke darüber nach, wie HW-Probleme erkannt werden könnten. –

+0

ein Weg, um Hardware-Probleme zu erkennen, ist die 'Ereignisanzeige' von Windows anzuzeigen. Es gibt eine große Änderung, dass Hardwareprobleme dort gemeldet werden. – frewper

1

Die Ursache des Problems wird in der Datei hs_err * dokumentiert, wenn Sie wissen, worauf Sie achten müssen. Sieh dir das an, und wenn es immer noch nicht klar ist, ziehe es in Betracht, die ersten 5 oder 10 Zeilen des Stack-Trace und andere relevante Informationen zu posten (poste nicht das ganze Ding, es gibt Tonnen von Informationen drin, die nicht helfen werden) aber Sie müssen herausfinden, welche 1% ist wichtig :-))

0

Verwenden Sie ein Browser-Widget und Ausführen von Javascript im Browser-Widget? Wenn dies der Fall ist, gibt es in einigen Versionen von SWT Fehler, die dazu führen, dass die JVM in nativem Code in verschiedenen Windows-Bibliotheken abstürzt.

Zwei Beispiele (die ich geöffnet habe) sind bug 217306 und bug 127960. Diese beiden Fehlerberichte sind jedoch nicht die einzigen Fehlerberichte der JVM, die in SWT abstürzen.

Wenn Sie das Browser-Widget nicht verwenden, helfen Ihnen diese Vorschläge nicht weiter. In diesem Fall können Sie nach einer Liste von SWT bugs causing a JVM crash suchen. Wenn keine dieser Probleme auftreten, empfehle ich dringend, dass Sie einen Fehlerbericht mit SWT öffnen.

3

Antwort gefunden!

Ich hatte den gleichen Fehler und bemerkte, dass andere, die den Inhalt der PID-Protokolldatei zur Verfügung stellten 64-Bit-Windows ausgeführt wurden. Genau wie ich. In der Endprotokolldatei enthielt es die PATH-Anweisung. Dort konnte ich sehen, C: \ Windows \ SysWOW64 wurde falsch vor:% SystemRoot% \ system32 aufgeführt. Sobald ich es korrigiert habe, ist die Ausnahme verschwunden.

+0

Vielen Dank! Es stellte sich heraus, dass ich auch einen fehlerhaften Eintrag in meiner PATH-Variablen hatte, und das Problem wurde behoben. – Meghan

0

Ich habe das gleiche Problem mit einer JNLP-Anwendung, die ich seit langem verwendet habe und ist ziemlich zuverlässig. Das Problem begann unmittelbar nach dem Upgrade von Windows 7 auf Windows 10.Laut meiner Untersuchung ist es wahrscheinlich ein Fehler in Win 10.

Das Folgende ist keine Lösung, sondern eine hässliche Problemumgehung. Im jre/bin-Verzeichnis gibt es javaws.exe. Wenn I mit der rechten Maustaste/Eigenschaften/Kompatibilität und angekreuzt Dieses Programm als Administrator ausführen, begann die JNLP App zu arbeiten.

Bitte beachten Sie, dass dieser Ansatz Sicherheitsprobleme verursachen kann und nur verwendet werden kann, wenn Sie keine andere Option haben und 100% wissen, was Sie tun.

Verwandte Themen