use*_*150 4 java memory-leaks out-of-memory java-8 metaspace
我收到此错误:
"java.lang.OutOfMemoryError: Compressed class space"
Run Code Online (Sandbox Code Playgroud)
在我弄清楚触发因素之前,我尝试禁用压缩的类指针
-XX:-UseCompressedClassPointers.
但我仍然收到此错误。这怎么可能?
谢谢!
理解 OutOfMemoryError 异常中解释了此异常:
原因:在 64 位平台上,指向类元数据的指针可以用 32 位偏移量(带有
UseCompressedOops)表示。这由命令行标志控制UseCompressedClassPointers(默认情况下打开)。如果UseCompressedClassPointers使用 ,则可用于类元数据的空间量固定为数量CompressedClassSpaceSize。如果需要的空间UseCompressedClassPointers超过CompressedClassSpaceSize,则会抛出一个java.lang.OutOfMemoryError带有详细信息的压缩类空间。行动:增加
CompressedClassSpaceSize或您可以关闭UseCompressedClassPointers。注意: 的可接受大小是有界限的CompressedClassSpaceSize。例如-XX:CompressedClassSpaceSize=4g,超出可接受的界限会导致CompressedClassSpaceSize of 4294967296等消息无效;必须介于 1048576 和 3221225472 之间。
小智 4
压缩类空间是元空间的一部分。
看起来您的解决方案是增加最大元空间大小,或者您可能有一个泄漏的类加载器。
通常,当 Java 堆中没有足够的空间来分配对象时,会抛出此错误。在这种情况下,垃圾收集器无法腾出空间来容纳新对象,并且堆也无法进一步扩展。此外,当本机内存不足以支持 Java 类的加载时,也可能会引发此错误。在极少数情况下,当花费过多的时间进行垃圾收集并且释放的内存很少时,可能会抛出 java.lang.OutOfMemoryError 。
| 归档时间: |
|
| 查看次数: |
13475 次 |
| 最近记录: |