Czy mogę wybrać twój mózg w kwestii problemu z pamięcią?
Moja aplikacja Java, która nie jest ogromna (jak 14000 LOC), zużywa około 300 MB pamięci. Działa na Tomcat z bazą danych MySQL. Używam hibernacji, wiosny i prędkości.
Wydaje się, że nie ma wycieków, bo to powodujestabilizuje się i 300 MB, bez dalszego wzrostu. (Również zrobiłem trochę profilowania.) Mój zespół był jednak zaniepokojony ilością miejsca, z którego korzysta. Czy to wydaje się wysokie? Czy masz jakieś sugestie dotyczące sposobów jej zmniejszenia?
Wszelkie przemyślenia są doceniane.
Joe
Odpowiedzi:
4 dla odpowiedzi № 1Liczba LOC nie jest wskaźnikiem, ile sterty będzie używać aplikacja Java; nie ma korelacji między nimi.
300 MB nie jest szczególnie duże dla serweraaplikacja, która buforuje dane, ale jest nieco duża w przypadku aplikacji, która nie przechowuje żadnych danych buforowanych ani danych sesji (ale ponieważ dotyczy to samego serwera WWW, 300 MB jest ogólnie rozsądne).
2 dla odpowiedzi nr 2
Ilość kodu (LOC) rzadko ma duży wpływjeśli chodzi o wykorzystanie pamięci przez aplikację, to w końcu przechowywane są zmienne i obiekty, które zajmują większość pamięci. Dla mnie 300 megabajtów nie brzmi dużo, ale oczywiście zależy to od konkretnego scenariusza użytkowania:
- Ile pamięci ma serwer produkcyjny?
- Ilu użytkowników korzysta z takiej ilości pamięci?
- Ile rośnie zużycie pamięci na sesję użytkownika?
- Ilu użytkowników oczekujesz współbieżnie uzyskiwanie dostępu do aplikacji w trybie produkcyjnym?
Na ich podstawie możesz wykonać pewne obliczenia, np. czy Twoje środowisko produkcyjne jest w stanie obsłużyć oczekiwaną liczbę użytkowników, czy potrzebujesz więcej sprzętu, czy może potrzebujesz serializować niektóre dane na dysk / db itp.
0 dla odpowiedzi № 3
Nie mogę składać żadnych obietnic, ale nie sądzęmuszę się martwić. Uruchomiliśmy kilka aplikacji internetowych przy użyciu Glassfish, używając hibernacji, i każda z nich używa około 800-900 MB w urządzeniu deweloperskim, często mają 2 domeny działające w każdym rozmiarze.
0 dla odpowiedzi nr 4
Jeśli potrzebujesz zmniejszyć swój ślad, przynajmniej upewnij się, że używasz Velocity 1.6 lub wyższej. 1.5 zmarnowało sporo pamięci.