2016-02-02 1 views
3

Я получил эту ошибку:OutOfMemoryError: Сжатый класс пространство

"java.lang.OutOfMemoryError: Compressed class space" 

и пока я выяснить, что спусковой крючок, я попытался отключить сжатые указатели класса с

-XX:-UseCompressedClassPointers.

но Я все еще получаю эту ошибку. как это возможно?

Спасибо!

ответ

2

Сжатый класс - это часть метапас.

Похоже, ваше разрешение состоит в том, чтобы увеличить максимальный размер метаданных, или вы можете потенциально иметь негерметичный загрузчик классов.

Обычно эта ошибка возникает, когда недостаточно места для размещения объекта в куче Java. В этом случае сборщик мусора не может сделать пространство доступным для размещения нового объекта, а куча не может быть расширена дальше. Кроме того, эта ошибка может возникнуть, если для поддержки загрузки класса Java недостаточно внутренней памяти. В редком случае, java.lang.OutOfMemoryError может быть брошен, когда затрачивается чрезмерное количество времени на сборку мусора и освобождается небольшая память.

+1

Некоторые особенности помогло бы, например, покажите варианты увеличения максимального размера метапроцессора. –

2

Это исключение объясняется в Understand the OutOfMemoryError Exception:

Cause: On 64-bit platforms a pointer to class metadata can be represented by a 32-bit offset (with UseCompressedOops). This is controlled by the command line flag UseCompressedClassPointers (on by default). If the UseCompressedClassPointers is used, the amount of space available for class metadata is fixed at the amount CompressedClassSpaceSize . If the space needed for UseCompressedClassPointers exceeds CompressedClassSpaceSize , a java.lang.OutOfMemoryError with detail Compressed class space is thrown.

Action: Increase CompressedClassSpaceSize to turn off UseCompressedClassPointers . Note: There are bounds on the acceptable size of CompressedClassSpaceSize . For example -XX:CompressedClassSpaceSize=4g , exceeds acceptable bounds will result in a message such as CompressedClassSpaceSize of 4294967296 is invalid; must be between 1048576 and 3221225472.