Java OutOfMemoryError:压缩的类空间
我得到了这个错误:Java OutOfMemoryError:压缩的类空间,java,memory-leaks,java-8,out-of-memory,metaspace,Java,Memory Leaks,Java 8,Out Of Memory,Metaspace,我得到了这个错误: "java.lang.OutOfMemoryError: Compressed class space" 在我弄清楚是什么触发之前,我试着 使用禁用压缩类指针 -XX:-使用压缩类指针。 但我还是犯了这个错误。怎么可能呢 谢谢 压缩类空间是元空间的一部分 看起来您的解决方案是增加最大元空间大小,或者您可能有一个泄漏的类加载器 通常,当Java堆中没有足够的空间分配对象时,会引发此错误。在这种情况下,垃圾收集器无法提供空间来容纳新对象,堆也无法进一步扩展。此外,当本机内存不
"java.lang.OutOfMemoryError: Compressed class space"
在我弄清楚是什么触发之前,我试着
使用禁用压缩类指针
-XX:-使用压缩类指针。
但我还是犯了这个错误。怎么可能呢
谢谢 压缩类空间是元空间的一部分 看起来您的解决方案是增加最大元空间大小,或者您可能有一个泄漏的类加载器
通常,当Java堆中没有足够的空间分配对象时,会引发此错误。在这种情况下,垃圾收集器无法提供空间来容纳新对象,堆也无法进一步扩展。此外,当本机内存不足以支持加载Java类时,可能会引发此错误。在极少数情况下,当执行垃圾收集的时间过长且释放的内存很少时,可能会抛出java.lang.OutOfMemoryError。此异常在以下章节中解释: 原因:在64位平台上,指向类元数据的指针可以用32位偏移量表示(使用
UseCompressedOops
)。这由命令行标志UseCompressedClassPointers
(默认情况下为on)控制。如果使用了UseCompressedClassPointers
,则可用于类元数据的空间量固定为CompressedClassSpaceSize
。如果UseCompressedClassPointers
所需的空间超过CompressedClassSpaceSize
,将抛出一个java.lang.OutOfMemoryError
,其中包含详细信息压缩的类空间
操作:增加CompressedClassSpaceSize
或关闭UseCompressedClassPointers
。注意:CompressedClassSpaceSize
的可接受大小有界限。例如-XX:CompressedClassSpaceSize=4g
,超过可接受的界限将导致消息(如CompressedClassSpaceSize为4294967296)无效;必须介于1048576和322225472之间
一些细节可能会有帮助,例如,显示增加最大元空间大小的选项。您的真正意思是“增加CompressedClassSpaceSize以关闭UseCompressedClassPointers”,还是说或关闭?从你其余的评论来看,情况似乎就是这样。只是想确定一下,为了未来的读者。