Я пытаюсь настроить какое-то приложение с высокой нагрузкой, которое передает данные из одного облака в другое с некоторой предварительной обработкой. Особенностью моего приложения является интенсивное использование памяти и низкое потребление процессора. Я мониторил приложение с помощью jconsole и получил интересную картину - процессор загружен до 15%, и я все еще ловлю ошибку нехватки памяти.
Ручной запуск «Выполнить GC» из jconsole очищает много памяти во всех поколениях, поэтому я предполагаю, что в приложении нет утечки памяти.
Мое приложение работает на мезосе/марафоне, поэтому я попытался переключиться с одного виртуального ЦП на многопроцессорный с различными GC (-XX:+UseG1GC; -XX:+UseParallelGC без другой настройки), и картина на самом деле такая же;
- Итак, почему сборщик мусора не использует ЦП для освобождения памяти?
- Можем ли мы настроить GC для более частой/правильной работы?