Как правильно установить размер 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 не работает. Я ожидаю получить 512 м, но 85983232 байта = 82 МБ .. Или я неправильно вижу ..? Кто-нибудь может просветить меня по этому поводу? Д:


person 황현정    schedule 05.07.2012    source источник
comment
Я предполагаю, что вы перезапустили процесс tomcat? С помощью ps -wwf 6444 вы можете увидеть полную команду, которая запустила процесс. Убедитесь, что ваши параметры включены. Вы также можете запустить jconsole (входит в состав jdk) и подключиться к процессу, а затем проверить вкладку «Общая информация» и вкладку «Память».   -  person GreyFairer    schedule 05.07.2012
comment
Я не перезапускал tomcat. Я думаю, что забыл этот процесс.. D: Извините, я новичок в этом развертывании.. Но я думаю, как разработчик, я должен знать такие вещи.. Спасибо. :)   -  person 황현정    schedule 05.07.2012


Ответы (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:

Откройте или создайте файл setenv.bat, расположенный в каталоге «bin»:

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m
person amicngh    schedule 05.07.2012
comment
На самом деле рекомендуемый способ установить это - создать setenv.bat (Windows) или setenv.sh (*nix) и поместить туда записи, Tomcat подберет их, и с ним будет легче управлять обновлением. - person Steve; 06.07.2012
comment
Есть много ответов, подобных этому, но я обнаружил, что это была самая ясная и простая формулировка, очень полезная. - person Jeremy; 21.01.2016
comment
Зачем менять Xmx на увеличение PermGen? - person amdev; 17.10.2016

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

person matabares    schedule 15.09.2013
comment
Я представил правку, чтобы добавить это к принятому ответу. - person Mr. Lance E Sloan; 26.03.2015

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

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

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

person Loic O.    schedule 05.07.2012
comment
Я использую линукс. Но я прочитаю это и посмотрю, как это работает. Большое спасибо за ответ. :3 - person 황현정; 05.07.2012

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

person Mike    schedule 23.02.2018