2015-12-02 31 views
9

PytanieZapobieganie awariom Program pokazujący kiedy przydział stos ślady

Dlaczego VisualVM zakończyć swój program podczas próby wyświetlenia obiektu alokacji ślad stosu, i jak to naprawić?


mam oczyszczania aplikację, która ma kilka problemów z pamięcią, największym istota tworzenia pęczek krótkotrwały int[] co powoduje GC na ogień jak szalony:

enter image description here

Kiedy Klikam prawym przyciskiem myszy int[] i wybieram Zrób migawkę i wyświetl slajdy stosu alokacji, moja aplikacja zostanie zamknięta i wyświetli się okno z ostrzeżeniem informujące, że Nie udało się uzyskać migawki wyników. Aplikacja zakończona:

enter image description here

Najbliższy rzeczą znalazłem na ten temat był raport o błędzie, który recommended running my profiled application with -Xnoclassgc. To nie zadziałało, wyniki były takie same.


Specyfikacja

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 

dziennika crash

http://pastebin.com/a4YPWutj

Wielkość dziennika wypadku przekroczone limit znaków, więc musiałem umieścić go gdzie indziej. Przepraszam.

+0

Kilka pierwszych pytań: 1. Czy Eclipse jest w jakiś sposób związane z tą sytuacją, którą właśnie opisałeś? Wymieniłeś wersję Eclipse, ale nie wspominałeś o niej w żaden inny sposób. 2. Czy informacje o Java i systemie pochodzą z serwera, na którym aplikacja jest uruchomiona? –

+0

Również awaria aplikacji powinna spowodować zapisanie raportu awarii w celu debugowania. Czy możesz zlokalizować plik (hprof?) I wkleić odpowiednią treść tutaj? –

+0

Czy testujesz program Java Mission Control (jmc.exe)? Jest to to samo narzędzie, ale w przypadku Java8 z pewną brakującą funkcją. Ale możesz zrobić to samo, co VisualVM. –

Odpowiedz

5

Ok. Tak więc na podstawie crashlog otrzymanego, wygląda na to wpadł na VisualVM bug już zgłaszane tutaj:

JVM being profiled crashes

Przedkładający pierwotnego błędu zwężonej to zachowanie dół Java8, więc najlepszym masz szanse uruchamia VisualVM w starszym (Java7) środowisku wykonawczym. Jeśli jest to opcja dla ciebie, musisz tylko pobrać JDK Java7 i uruchomić VisualVM bezpośrednio stamtąd.

+0

Aw man, chyba mógłbym zacząć używać JMC na razie, ponieważ używanie Java 7 nie jest opcją /: Dzięki za znalezienie tego! –