Как правильно установить размер permgen?

у меня есть эта виртуальная машина с tomcat, java и grails. Я получаю ошибки permgen, поэтому я огляделся и нашел решение:

set JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"

Я использую SSH для доступа к виртуальной машине и введите аргументы выше. Полагаю, это решит проблему. Дело в том, что я хотел убедиться, что сделал это правильно. Поэтому я снова искал, как я могу проверить текущий permSize, и это решение, которое я получил:

jinfo -flag MaxPermSize 6444

6444-это pid, и в качестве ответа я получил этот.

-XX:MaxPermSize=85983232

вопрос: Является ли значение maxPermSize в байтах? потому что, если это так, это означало бы, что команда java_opts не работала. Я ожидаю получить 512m, но 85983232 байт = 82 Мб.. Или я вижу это неправильно..? Кто-нибудь может просветить меня на этот счет? Д:

4 ответов


вы должны изменить значения в CATALINA_OPTS параметр, определенный в файле запуска Tomcat Catalina. Чтобы увеличить PermGen память измените значение MaxPermSize переменной, в противном случае измените значение Xmx переменной.

Linux & Mac OS: открыть или создать setenv.sh файл, помещенный в каталог "bin". Вы должны применить изменения к этой строке:

export CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"

Windows:

открыть или создать the setenv.bat файл, помещенный в каталог "bin":

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

Не ставьте конфигурацию среды в catalina.bat/catalina.sh - ... Вместо этого вы должны создать новый файл в CATALINA_BASE\bin\setenv.bat, чтобы сохранить ваши настройки отдельно от установки tomcat.


таким образом, Вы делаете правильную вещь относительно "-XX:MaxPermSize=512m": это действительно правильный синтаксис. Вы можете попытаться установить эти параметры непосредственно в файлы сервера Catalyna, чтобы они использовались при запуске сервера.

возможно этот пост поможет вам!

как убедиться, что Tomcat6 читает CATALINA_OPTS в Windows?


полностью удален из java 8+
Частично удален из java 7 (например, интернированные строки)
источник