RSS-память растет на неработающих процессах Java - PullRequest
0 голосов
/ 01 июля 2019

Я использую пару небольших серверов, написанных на Java.Есть один, который слушает на стандартном сокете, остальные общаются друг с другом, используя ActiveMQ.я заметил кое-что странное, когда, если я оставляю систему бездействующей в течение нескольких часов, память RSS либо увеличивается на несколько десятков мегабайт, либо уменьшается на несколько десятков мегабайт.Я использовал jconsole, чтобы увидеть, что происходит на серверах, но использование памяти и создание объектов оставалось относительно плоским.Я проверил это с Oracle Java и OpenJDK.Я попытался использовать рекомендуемое решение для установки MALLOC_ARENA_MAX = 4, но это не дало эффекта.Что-то еще происходит в JVM, о котором я не знаю, и есть ли способ остановить это?

Настройка:

  • CentOS 7.4.1708 (2G RAM,4 процессора)
  • Oracle Java 8u162
  • OpenJDK 1.8.0.212
  • glibc 2.17

1 Ответ

0 голосов
/ 01 июля 2019

Что-то еще происходит в JVM

Да. Сборка мусора, JIT-компиляция, загрузка / выгрузка классов, ведение журнала, ввод-вывод и т. Д. Подробнее здесь .

RSS процесса Java может легко увеличиваться и уменьшаться на сотни мегабайт - «несколько мегабайт», как правило, вообще не является проблемой. Чтобы определить, откуда выделяется собственная память, включите Отслеживание собственной памяти и / или используйте async-profiler , как описано в этого ответа .

...