В частности, почему это поможет исправить проблему PermGen OutOfMemoryError?
Кроме того, бонусные баллы за ответ, который указывает мне на документацию по аргументам JVM ...
java
jvm
jvm-arguments
Geoff
источник
источник
Ответы:
Постоянное пространство - это место, где классы, методы, интернализованные строки и подобные объекты, используемые ВМ, хранятся и никогда не освобождаются (отсюда и название).
В этой статье Oracle кратко представлены работа и параметризация GC HotSpot и советуется увеличить это пространство, если вы загружаете много классов (это обычно имеет место для серверов приложений и некоторых IDE, таких как Eclipse):
Обратите внимание, что в этой другой документации Oracle перечислены другие аргументы HotSpot.
Обновление: Начиная с Java 8, пространство permgen и этот параметр исчезли. Модель памяти, используемая для загруженных классов и методов, отличается и не ограничена (с настройками по умолчанию). Вы не должны больше видеть эту ошибку.
источник
-XX:PermSize -XX:MaxPermSize
используются для установки размера для постоянного поколения.Постоянное поколение: постоянное поколение - это место, где хранятся файлы классов. Это результат скомпилированных классов и страниц JSP. Если это пространство заполнено, запускается полная сборка мусора. Если полная сборка мусора не может очистить старые классы, на которые нет ссылок, и не осталось места для расширения постоянного пространства, выдается ошибка нехватки памяти (OOME), и JVM падает.
источник
В Java 8 этот параметр обычно используется для печати предупреждающего сообщения, подобного этому:
Причина, по которой вы получаете это сообщение в Java 8, заключается в том, что Permgen был заменен Metaspace для устранения некоторых недостатков PermGen (как вы могли убедиться сами, одним из этих недостатков является то, что он имеет фиксированный размер).
К вашему сведению: статья о Metaspace: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
источник