Mam serwer WWW z nginx, apache i tomcat7. Na tym serwerze działa program Java. Mam również dostęp do serwera za pomocą szpachli.
Zwykle raz dziennie pamięć sterty na serwerzejest pełny (CMS Old Gen - Heap Memory na 100%), a program robi się naprawdę wolny. Następnie loguję się na serwerze i ponownie uruchamiam usługę tomcat7. Pamięć sterty zostaje wyczyszczona, a program ponownie działa poprawnie.
Mam więc dwa pytania.
- Czy muszę uruchomić czyszczenie pamięci z programu lub serwera?
- Kiedy funkcja odśmiecania jest na serwerze, jak ją włączyć?
Nie wiem, czy to dla Ciebie wystarczająca informacja. Jeśli czegoś potrzebujesz, daj mi znać.
Z poważaniem
Edytować:
Maksymalna pula pamięci Pamięć sterty CMS Old Gen 316.81 MB Pamięć Eden Space Heap 66,56 MB Survivor Space Heap Pamięć 8,31 MB Razem 391,68 MB
To jest wyciąg z Apache Managera(niestety nie mogę jeszcze opublikować żadnych zdjęć). Gdy CMS Old Gen jest włączony w 100%, program zaczyna działać naprawdę wolno. W lokalnej wersji aplikacji uruchomiłem JVM Monitor, aby sprawdzić, czy jest jakiś wyciek. Najwyraźniej śmieciarz działa tam poprawnie, ale nie na serwerze.
Jakieś sugestie?
Więc zwiększyłem rozmiar sterty i teraz próbuję zamknąć wycieki. Dziękuję bardzo za Twoją pomoc. Do zobaczenia =)
Odpowiedzi:
2 dla odpowiedzi № 1Śmieciarka działa domyślnie. Jeśli chcesz się upewnić, że jest uruchomiony, możesz uruchomić JVM z opcją -Xloggc: {plik}, aby uzyskać informacje o debugowaniu dotyczące jego działań.
Jeśli musisz zrestartować tomcat, aby wyczyścić stertę, prawdopodobnie w aplikacji występuje przeciek pamięci, jak już wspomniano w komentarzach.