Я работаю над Java веб-приложением, которое работает на сервере памяти объемом 1 ГБ с Tomcat.
В последнее время мы заметили, что приложение потребляет большую часть памяти на этом сервере - около 83%.
Я профилировал приложение, используя VisualVM на моем персональном компьютере, с гораздо большим ОЗУ.
VisualVM показывает примерно 400 МБ используемого пространства кучи и до 1,4 ГБ выделенного пространства кучи.
Настройка -Xmx512m позволяет уменьшить выделенное пространство кучи без какого-либо существенного влияния на производительность сайтов. .
Несколько вопросов:
- Это более или менее нормально? Почему это происходит?
- Что можно сделать, чтобы уменьшить потребление памяти? Использование -Xmx для ограничения объема занимаемой памяти может быть проблемой, если приложению действительно нужно больше памяти.
- Если ОС требуется другое значение, скажем, 100 МБ для другого процесса, java освободит эту память для использования ОС, учитывая, что она не использует кучу, а только выделенную кучу, или операционная система столкнется с проблемой памяти?