Как исправить сжатое пространство классов?

Мы используем open jdk 8 с весенней загрузкой версии 2.2.4.RELEASE и встроенным tomcat версии 9.0.16 в нашем веб-приложении, и с последних 3 месяцев мы часто сталкиваемся с проблемой сжатого пространства классов. Каждый раз, когда происходит OOM, мы должны перезапускать приложение. Журнал из catalina.log находится ниже.

ERROR org.jgroups.logging.Log4J2LogImpl.error:Line 95 - failed executing task FD_ALL: TimeoutChecker (interval=2000 ms)
java.lang.OutOfMemoryError: Compressed class space

788][2020-07-21 10:29:12,475]- org.apache.juli.logging.DirectJDKLog.log:Line 175 - Failed to complete processing of a request
java.lang.OutOfMemoryError: Compressed class space

Мы также выделили 2 ГБ для CompressedClassSpaceSize, используя XX:CompressedClassSpaceSize=2gсогласно некоторому ответу в OutOfMemoryError: сжатое пространство классов

0 ответов

Вы можете решить эту проблему, используя один из двух вариантов ниже.

1. Вы можете увеличить лимит пространства классов, используя флаг -XX:CompressedClassSpaceSize=n VM. Максимальный лимит составляет 4 ГБ.

(ИЛИ ЖЕ)

2. Вы можете полностью отключить функцию указателя сжатого класса, используя флаг VM -XX:-UseCompressedClassPointers.

Примечание: имейте в виду, что отключение этой функции увеличит использование пространства кучи вашим приложением.

Чтобы узнать больше об этой ошибке OutOfMemoryError и указателе класса (поле klass), вы можете прочитать эти книги. Это даст вам лучшее представление о том, что вы действительно можете делать со сжатым указателем класса и пространством.

Оптимизация производительности Java: сжатые OOPS

Другие вопросы по тегам