4 ответов:
постоянное пространство-это место, где хранятся классы, методы, интернализованные строки и аналогичные объекты, используемые виртуальной машиной, и никогда не освобождаются (отсюда и имя).
эта статья Оракул кратко представляет работу и параметризацию HotSpot GC и советует вам увеличить это пространство, если вы загружаете много классов (это обычно имеет место для серверов приложений и некоторых IDE, таких как Eclipse):
постоянное поколение не делает оказывают заметное влияние на мусор производительность коллектора для большинства приложений. Тем не менее, некоторые приложения динамически генерируют и загружают множество классов; например, некоторые реализации страниц JavaServer Pages (JSP). Эти приложения могут нуждаться в большем постоянном поколении для хранения дополнительные занятия. Если да, то максимальный постоянный размер поколения может увеличится с помощью опции командной строки-XX: MaxPermSize=.
отметим, что этот и другие Оракул документация перечисляет другие аргументы HotSpot.
обновление : начиная с Java 8, как пространство permgen, так и этот параметр исчезли. Модель памяти, используемая для загруженных классов и методов, отличается и не ограничена (с настройками по умолчанию). Вы больше не должны видеть эту ошибку.
-XX:PermSize -XX:MaxPermSizeиспользуются для установки размера для постоянного поколения.постоянное поколение: постоянное поколение-это место, где хранятся файлы классов. Это результат скомпилированных классов и страниц JSP. Если это пространство заполнено, он запускает полную сборку мусора. Если полная сборка мусора не может очистить старые неиспользуемые классы и не остается места для расширения постоянного пространства, возникает ошибка нехватки памяти (OOME), и JVM аварийно завершит работу.
в Java 8 Этот параметр обычно используется для печати предупреждающее сообщение вроде этого:
Java HotSpot (TM) 64-разрядная серверная виртуальная машина предупреждение: игнорирование опции MaxPermSize=512m; поддержка была удалена в 8.0
причина, по которой вы получаете это сообщение в Java 8, заключается в том, что Permgen был заменен Metaspace для устранения некоторых недостатков PermGen (как вы могли видеть сами, один из этих недостатков заключается в том, что он был исправлен размер.)
к вашему сведению: статья о Метапространстве:http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
MaxPermSize-это максимальный размер для кучи постоянного поколения, кучи, которая содержит байтовый код классов и хранится отдельно от кучи объектов, содержащих фактические экземпляры.
Comments