0

我们在我们的 Web 应用程序中使用带有 spring boot 版本 2.2.4.RELEASE 和嵌入式 tomcat 版本 9.0.16 的 open jdk 8,并且自过去 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

我们还根据OutOfMemoryError: Compressed class spaceXX:CompressedClassSpaceSize=2g 的一些答案为 CompressedClassSpaceSize 分配了 2gb

4

1 回答 1

0

您可以使用以下两个选项之一来解决此问题。

1. 您可以通过使用 -XX:CompressedClassSpaceSize=n VM 标志来增加类空间的限制。最大限制为 4GB。

(或者)

2. 您可以使用-XX:-UseCompressedClassPointers VM 标志完全禁用压缩类指针功能。

注意:请注意,禁用此功能会增加应用程序的堆空间使用率。

要了解有关此 OutOfMemoryError 和类指针(klass 归档)的更多详细信息,您可以阅读这些书籍。它将让您更好地了解使用压缩类指针和空间真正可以做什么。

Java 性能优化:压缩的 OOPS

于 2020-10-13T18:31:34.430 回答