2013-06-16 36 views
6

Próbuję wygenerować zrzut sterty z mojego programu java, ale bez względu na to, co wydaje się próbować, nie mogę wymyślić, jak to zrobić.Generowanie zrzutów sterty Java JRE7

Pobrałem Eclipse Memory Analyzer (Plugin, a następnie Standalone), który powinien być w stanie zbierać zrzuty ciepła z aktywnych procesów jre .. jednak nie wyświetla żadnych. Dokumenty wymieniają kilka innych sposobów generowania ich, ale nie mogę sprawić, żeby któryś z nich działał, lub odnoszą się do czegoś, co po prostu nie istnieje w moim systemie. To samo dotyczy wszystkiego, co udało mi się znaleźć w Internecie ...

Program nie powoduje wyjątku braku pamięci, a jedynie zużywa o wiele więcej zasobów, niż się tego spodziewam.

Jestem w całkowitej utraty, jak dokładnie jego ma być zrobione:/

Każda pomoc będzie mile widziane dzięki.

+0

Czy próbowałeś i wygenerował zrzut sterty ręcznie na Runnning JVM przy użyciu 'jmap'? – fge

Odpowiedz

8

Możesz zrobić to ręcznie, używając Java JDK's jmap.exe.

  • Otrzymujesz PID swojego procesu.
  • Przejdź do% JAVA_HOME%/bin/(JDK)
  • W konsoli (wiersza poleceń) wpisać jmap.exe -dump:format=b,file=C:\dump\dump.bin PID
    • plik zrzutu jest zapisywany w ścieżce świadczenia (w moim przykładzie jest C:\dump\dump.bin)

Następnie można użyć IDE NetBeans do analizy tego zrzutu. Ma wbudowane narzędzia, wystarczy zaimportować dump.bin.

+0

Dziękuję bardzo, że działał jak czar! – user2491165