Память, выделенная процессом JVM, отличается от размера кучи. Размер используемой кучи может уменьшиться без фактического уменьшения пространства, выделенного JVM. JVM должна получить триггер, указывающий, что он должен уменьшить размер кучи. Как упоминает @Xepoch, это контролируется -XX:MaxHeapFreeRatio
.
Однако системный администратор жалуется, что использование памяти («top» в Linux) продолжает увеличиваться по мере того, как запланированные задания выполняются.
Это потому, что у вас, скорее всего, какая-то утечка памяти. Системные администраторы, как правило, жалуются, когда видят, что процессы медленно занимают все больше места.
Какие идеи или предложения могут помочь?
Вы смотрели на количество потоков? Ваше приложение создает свои собственные потоки и отправляет их в тупик и бездействует вечно?
Вы интегрируетесь с какими-либо сторонними API, которые могут использовать JNI?