Próbuję mieć Tomcat, który jest obecnie uruchomiony jako usługa w systemie Windows 2003, zrzut sterty na OutOfMemoryError
.Czy mogę uruchomić Tomcat jako usługę do zrzucania sterty?
(Tomcat jest uruchomiony Hudson, który zgłasza problem przestrzeń sterty na końcu ogona mojego kompilacji. Uruchomienie build ręcznie nie wytwarza takiego błędu. Chłopaki Hudson potrzebować zrzut sterty aby rozpocząć.)
Zgodnie z instrukcją w innym miejscu, powiedziałem programowi Apache Service Monitor, aby skonfigurował maszynę JVM, której używa do uruchamiania Tomcata w celu zrzutu sterty, gdy napotkano numer OutOfMemoryError
przez dodanie następujących opcji JVM: -XX: + HeapDumpOnOutOfMemoryError Następnie uruchamiam kompilację jeszcze raz. Rzeczywiście, zgłasza, że wystąpił błąd sterty. Skanuję cały dysk szukając domyślnego pliku java_pid123.hprof
(gdzie oczywiście 123
jest zastępowany przez PID JVM). Brak plików o numerach .hprof
w dowolnym miejscu.
Jestem złapany w haczyk 22: Potrzebuję sterty sterty dla facetów Hudsona, aby naprawić ich wyciek pamięci, ale nie mogę dostać sterty sterty, jeśli prowadzę Hudson pod Tomcat.
Czy istnieje jakiś specjalny sposób, gdy Tomcat działa jako usługa systemu Windows, aby uzyskać zrzut sterty z niego na OutOfMemoryError?
Inna rzecz, którą próbowałem, to powiedzieć, na kartach Startup i Shutdown, aby użyć opcji "Java" zamiast opcji "jvm". Wierzę, że powinno to nakazać Menedżerowi usług, aby spróbował uruchomić Tomcat za pomocą polecenia wykonywalnego Java, zamiast bezpośrednio uruchamiać jvm.dll
. Kiedy to zrobię, usługa się nie uruchomi.
Z pewnością ktoś inny miał podobny problem?
Powinienem wspomnieć, że przywiązałem się do Tomcata z jconsole i zauważyłem, że użycie sterty nigdy nie przekracza 60MB. –