Próbuję uruchomić komendę jstack w mojej aplikacji java. Aplikacja jest dość duża, działa w jboss AS zajmując około 4GB pamięci. System operacyjny to Windows Server 2003 Standard Edition. Za każdym razem, gdy pojawia się błąd "Brak wystarczającej ilości pamięci do przetworzenia tego polecenia". Jest wystarczająco dużo pamięci RAM, 16 GB i miejsce na dysku. Jakieś pomysły?Jstack i Brak wystarczającej ilości pamięci do przetworzenia tego polecenia
Odpowiedz
wpadłem niedawno na Win2008r2 i pomyślałem, że dzielę rozwiązanie ponieważ zajęło to trochę czasu, aby dowiedzieć się. Rob's comment about psexec -s jest to, co dla mnie zrobiło.
Wygląda na to, że Vista i później jstack nie działają wbrew usługom ze względu na kontekst użytkownika. Nie ma nic wspólnego z pamięcią. Podejrzewam, że z tego samego powodu ludzie widzieli ten problem w 2003 roku za pomocą zdalnego pulpitu, chyba że użyjesz przełącznika/admin lub/console na mstsc. Począwszy od Visty, zaostrzone bezpieczeństwo prawdopodobnie je zepsuło.
Uruchamianie mojej aplikacji z okna cmd działało dobrze, ale to nie pomaga w debugowaniu naszej standardowej instalacji. Włączenie portu debugowania Java (dla VisualVM, Eclipse lub większości dowolnych debugerów Java) wymaga restartu aplikacji, więc tracisz stan, który prawdopodobnie próbujesz przechwycić, jeśli nie masz włączonego debugowania. Uruchomienie usługi pod moimi danymi logowania użytkownika nie zadziałało - byłem trochę zaskoczony. Ale psexec -s uruchamia jstack z kontekstu systemu, który działał jak czar. Aha, i będziesz musiał uruchomić psexec z podniesionego wiersza poleceń cmd, jeśli UAC jest włączony.
To zadziałało właśnie dla mnie. –
ditto. dzięki za uratowanie mojego dnia –
Działa to świetnie z Win 2003. Bardzo dziękuję – dAm2K
Mieliśmy problemy z uruchomieniem JStack na komputerze z systemem Windows z nawet niewielką aplikacją (1 GB). Skończyliśmy robić naszą analizę stosu i sterty za pomocą Netbeans. To wydawało się radzić sobie z analizowaniem plików zrzutu o wiele lepiej. YMMV.
Daj Netbeanowi szansę na profilowanie - to bardzo dobrze. Zwróć uwagę, że VisualVM jest profilerem NB cięcia i jest dostarczany z 6u7.
W przeszłości Widziałem to, gdy JVM jest uruchomiony jako usługa systemu Windows w systemie Windows 2003.
Po pierwsze, sprawdź, czy jest to issue with the TMP directory.
Po drugie, jstack (lub inne narzędzia, takie jak jconsole) nie połączy się z procesem lokalnym, dopóki nie zostanie uruchomiony w tej samej sesji. Jeśli usługa działa jako określony użytkownik, możesz połączyć się, logując się do tej samej sesji. Jeśli korzystasz z Pulpitu zdalnego, możesz połączyć się za pomocą "mstsc/admin" (przyzwyczajenie do/console) i spróbować ponownie uruchomić program jstack. Zdecydowanie sprawdź, czy katalog TMP jest ustawiony prawidłowo, jeśli to nie rozwiąże problemu.
Jeśli usługa działa jako LocalSystem, powyższa procedura prawdopodobnie niewiele pomoże. Nie wiem, czy istnieje sposób logowania się do tej samej sesji co LocalSystem.
Niektóre inne alternatywy mogą polegać na ustawieniu procesu zdalnego monitorowania i użyciu jvisualvm (z samego serwera lub innego komputera) w celu połączenia się przez port i wykonania zrzutu wątku.
Rozwiązanie, jeśli działa jako System lokalny: Połącz używając "mstsc/admin" przy użyciu konta logowania (nie wiesz dokładnie, jakie uprawnienia musi ono posiadać, moja należała do grupy Administratorzy) i użyj narzędzia Sysinternals psexec w następujący sposób: psexec -s "% JAVA_HOME% \ bin \ jstack.exe" PID> stack.txt Gdzie PID jest identyfikatorem procesu twojego procesu. Może być również konieczne zastąpienie rzeczywistej ścieżki do JDK w zależności od konkretnego środowiska. –
To jest komunikat o błędzie z bazowego O/S. W twoim kodzie niewiele można zrobić, aby poradzić sobie z tym innym, niż złapać wyjątek, który został rzucony. Boo to Windows, ponieważ jest tak ograniczony.
psexec -s jstack PID >> c:\jstack.log
idealnie działa na tym samym komputerze. Po raz pierwszy zajęło to trochę czasu, ale ponownie uruchomiłem z opcją przekierowania do pliku, zakończone w kilka sekund.
- 1. błąd Django Przebieg testowy Środowisko: brak wystarczającej ilości wolnego miejsca na dysku
- 2. C++ Zwiększenie ilości przechowywanych dużych ilości pamięci
- 3. Wzorzec do przetworzenia zdarzeń
- 4. Przenoszenie dużej zmiennej ilości pamięci z Cuda
- 5. Dlaczego nie ma wystarczającej ilości C++ 11 fence_release do synchronizacji Dekkera?
- 6. Nie można zarezerwować wystarczającej ilości miejsca na stertę obiektów, aby uruchomić JVM
- 7. Jstack daje java.lang.reflect.InvocationTargetException
- 8. Brak pamięci Excel VBA
- 9. Python odpowiednik Jstack?
- 10. Python Popen wysyła do przetworzenia na stdin, odbierając na stdout
- 11. Jak użyć jstack do znalezienia wątku blokującego
- 12. Odpowiednio przekazywanie danych na stdin do polecenia i odbiera dane z stdout tego polecenia w golang
- 13. Brak pamięci Problem z wyciekiem pamięci
- 14. Brak polecenia llvm w Mavericks
- 15. SBT brak pamięci z podprojektami
- 16. Jak wyprowadzić linię wyjściową wiersza polecenia Bash Shell po linii do Perla w celu przetworzenia Regex?
- 17. Jak prawidłowo przesyłać duże ilości danych z MVC3 bez używania zbyt dużej ilości pamięci RAM?
- 18. Matlab: Brak wolnej pamięci po wywołaniu funkcji
- 19. Pomoc ze zrozumieniem jstack wyjściu
- 20. Błąd importu svn: Nie można zapisać pliku svndiff do pliku tymczasowego: Nie ma wystarczającej ilości miejsca na dysku.
- 21. OutOfMemoryError: brak pamięci w IntelliJ?
- 22. Tworzenie dużej ilości elementów Sitecore powoduje wyciek pamięci
- 23. array - brak pamięci w php
- 24. Zmniejszenie ilości pamięci zużywanej przez metodę używającą OpenCv na iOS
- 25. Używanie php do zapisywania dużej ilości danych w Excelu bez błędu limitu pamięci
- 26. Brak polecenia wyjściowego podczas uruchamiania: 'am start -n
- 27. Internet Explorer 11 „Za mało pamięci” błąd
- 28. Dlaczego iterowanie przez duży Django QuerySet pochłania ogromne ilości pamięci?
- 29. Błąd "brak polecenia" adb "znaleziony" na Ubuntu
- 30. Skonfiguruj Visual Studio, aby korzystać z większej ilości pamięci ram
To wydaje się być komunikat o błędzie systemu Windows. –
Mam go na Tomcat, który przyjmuje 280 MB. – ripper234
Również patrzyłem na to pytanie - http://stackoverflow.com/questions/222108/getting-the-java-thread-id-and-stack-trace-of-run-away-java-thread To doesn ' t pomoc, ponieważ jconsole nie widzi aplikacji. – ripper234