Próbuję uruchomić tomcat na systemie z małą ilością pamięci (150-256 Mb). Mimo że JVM uruchamiam z -Xmx64m (który i tak powinien być domyślny), proces natychmiast zajmuje 200 MB +.
Zastanawiam się, dlaczego JVM potrzebuje tak dużo pamięci, czy istnieje sposób na jej dostrojenie? Czy inne maszyny JVM są lepsze od Słońca pod względem niskiego zużycia pamięci - i czy działają z tomcat?
Dzięki opcji -Xmx ograniczasz wielkość sterty zarezerwowanej przez JVM ... Istnieją dodatkowe zasoby, których JVM potrzebuje ...
„Dzięki za pamięć” * to dobry artykuł wyjaśniający, w jaki sposób JVM wykorzystuje pamięć ...
Oprócz tego możesz wypróbować JVM IBM, powinien on współpracować z Tomcat, nie wiem czy niektóre z darmowych implementacji JVM działają.
Niemniej jednak nie sądzę, że maszyna z tak niską pamięcią przyniesie ci jakieś korzyści. Java potrzebuje tylko pamięci.
* Ponieważ nowi użytkownicy nie mogą przesyłać hiperłączy, musisz sam przejrzeć ten artykuł ... jest to pierwszy hit w Google dla „dzięki za pamięć IBM”.
źródło
Wypróbuj także JRockit JVM, który ma mniejszą powierzchnię pamięci. Nadal możesz pobrać licencjonowane wersje JRockit BEA za darmo. tzn. wersje zanim Oracle przejęła BEA.
Linki do pobrania można znaleźć na stronie http://forums.oracle.com/forums/thread.jspa?threadID=816133&tstart=0 .
źródło
Jedną przydatną techniką, którą znalazłem, jest użycie monitorowania JMX, aby zobaczyć dokładnie, ile pamięci jest używane przez stertę w porównaniu do przestrzeni permgenowej.
Skonfiguruj JMX w Tomcat zgodnie z opisem tutaj http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
Następnie użyj JConsole (dostarczany z JDK 5 lub JDK 6) - znacznik pamięci będzie śledził zużycie pamięci w czasie.
Ponadto - uważaj na miękkie ponowne uruchamianie aplikacji internetowych. Jeśli przeładujesz aplikację internetową, przestrzeń permgenowa nie będzie gromadzona i będzie się z czasem powiększać. Musisz zrobić pełny przystanek / start Tomcata, aby odzyskać przestrzeń permgenową.
źródło