Ниже приведены решения, приведенные в этом блоге , если вы используете алгоритм CMS:
(1). Переключиться на алгоритм G1 GC
G1 GC стал алгоритмом GC по умолчанию начиная с java 9. Итак, вы можете рассмотреть вопрос о переносе приложения в этот алгоритм. Это может обеспечить лучшие характеристики производительности, чем алгоритм CMS GC. Настроить гораздо проще, так как аргументов сравнительно меньше. Кроме того, он предоставляет опции для удаления дублирующихся строк из памяти. Если вы сможете устранить дубликаты строк, это может помочь снизить общий объем памяти.
(2). Переключиться на алгоритм Z GC
Z GC - это масштабируемый сборщик мусора с малой задержкой. Его цель - сохранить время паузы GC менее 10 мс. Ранний доступ к алгоритму Z GC доступен в java 11, 12. Так что, если ваше приложение работает на java 11, 12. Вы можете рассмотреть возможность обновления до алгоритма Z GC. Наш предварительный анализ Z GC показывает отличные результаты.
(3). Продолжить с CMS
Для некоторых приложений мы видим, что CMS обеспечивает впечатляющие результаты, которые G1 GC не соответствует даже после большого количества настроек. Итак, если вы изучили два других варианта и убедились, что алгоритм CMS - это брак для вашего приложения в раю :-), вы можете рассмотреть возможность работы с самим алгоритмом CMS. В этом списке рассылки OpenJDK JDK9-dev есть даже аргументы, которые продолжают поддерживать CMS. Исходя из моего личного опыта, я вижу, что функции и API, которые устарели в Java 1.1, продолжают существовать даже в Java 12 (даже после 20 лет). Кажется, что все устаревшие API и функции, кажется, выживают (и никогда не умирают). Таким образом, продолжение работы на CMS также является опцией. Конечно, это ваш звонок, и ваши заинтересованные стороны звонят.