如何修复压缩的类空间



我们在我们的web应用程序中使用带有弹簧启动版本2.2.4.RELEASE和嵌入式tomcat版本9.0.16的开放式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

我们还使用XX:CompressedClassSpaceSize=2g为CompressedClassSpaceSize分配了2gb根据OutOfMemoryError的一些答案:压缩类空间

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

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

(或(

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

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

为了了解更多关于OutOfMemoryError和类指针(klass文件(的详细信息,您可以阅读这些书。它将让您更好地了解如何使用压缩类指针和空间。

Java性能优化:压缩OOPS

最新更新