2015-12-02 23 views
9

FragePrevent-Programm abstürzt, wenn Zuteilung Stapel zeigt Spuren

Warum VisualVM mein Programm beendet, wenn Sie versuchen, Objektzuordnung Stack-Trace zu sehen, und wie kann ich es beheben?


Ich putze eine Anwendung auf, die ein paar Probleme mit dem Speicher hat, der größte ist ein Bündel von kurzlebigen int[] schaffen, die GC wie verrückt Feuer verursacht:

enter image description here

Wenn Ich klicke mit der rechten Maustaste int[] und wähle Take Snapshot und Zeige Zuordnung Stack Traces, meine Anwendung schließt und eine Warnmeldung erscheint Failed, um Ergebnisse Snapshot zu erhalten. Die Anwendung beendet:

enter image description here

Das nächste, was ich zu dem Thema gefunden ein Bug-Report, die recommended running my profiled application with -Xnoclassgc war. Es hat nicht funktioniert, die Ergebnisse waren die gleichen.


Specs

VisualVM: 1.8.0_60 (Build 1380-140910); platform 20140910-unknown-revn 
Java: 1.8.0_60; Java HotSpot(TM) 64-Bit Server VM (25.60-b23, mixed mode) 
Eclipse: Luna Release (4.4.0) Build id: 20140612-0600 
System: Windows 7 (6.1) Service Pack 1, amd64 64bit 

Crashlog

http://pastebin.com/a4YPWutj

Die Größe des Crash-Protokoll überschritten die Zeichengrenze, also musste ich sie woanders platzieren. Es tut uns leid.

+0

Nur ein paar Fragen zuerst: 1. Ist Eclipse irgendwie mit dieser Situation verbunden, die Sie gerade beschrieben haben? Sie haben Ihre Eclipse-Version aufgelistet, aber nicht anders erwähnt. 2. Sind die Java- und Systeminformationen von dem Server gekommen, auf dem Sie die Anwendung ausführen? –

+0

Auch der Anwendungsabsturz sollte zu einem Absturzbericht führen, der zu Debugzwecken gespeichert wird. Können Sie die Datei finden (hprof?) Und den entsprechenden Inhalt hier einfügen? –

+0

Testen Sie Java Mission Control (jmc.exe)? Es ist das gleiche Tool, aber für Java8 mit einigen kostenlosen Funktionen. Aber Sie können dasselbe als VisualVM tun. –

Antwort

5

Ok. So auf der Grundlage der Crashlog erhalten, sieht es aus wie Sie in eine VisualVM Fehler lief bereits hier berichtet:

JVM being profiled crashes

Der Einreicher des ursprünglichen Fehler verengt dieses Verhalten bis zu Java8, so dass die beste Chance, die Sie haben führt eine VisualVM auf einer älteren (Java7) Laufzeit aus. Wenn dies eine Option für Sie ist, müssen Sie nur ein Java7-JDK herunterladen und VisualVM direkt von dort ausführen.

+0

Aw Mann, ich denke, ich könnte jetzt JMC verwenden, da die Verwendung von Java 7 keine Option ist /: Danke, dass du das gefunden hast! –