Как настроена память JVM 6 для JBOSS AS 5? - PullRequest
3 голосов
/ 30 июля 2009

Я использую приложение ICEFaces, которое работает через JBOSS, мой текущий размер кучи установлен на

-Xms1024m –Xmx1024m -XX: MaxPermSize = 256 м

Какова ваша рекомендация по настройке параметров памяти для JBOSS AS 5 (5.0.1 GA) JVM 6?

Ответы [ 3 ]

4 голосов
/ 04 октября 2009

Согласно этой статье :

AS 5 считается жадным, когда дело доходит до PermGen . При запуске часто выдает OutOfMemoryException: PermGen Error.

Это может быть особенно неприятно во время разработки, когда вы часто выполняете горячее развертывание приложения. В этом случае JBoss QA рекомендует увеличить размер permgen, разрешить выгрузку классов и развертку permgen :

-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

Но это больше к вашему сведению, я не предлагаю применять эту конфигурацию вслепую (как люди писали в комментариях, «если она не сломана, не исправляйте ее»).

Что касается размера кучи, всегда имейте в виду: чем больше куча, тем длиннее главный GC . Теперь, когда вы говорите «это было определенно слишком мало», я действительно не знаю, что это значит (какие ошибки, симптомы и т. Д.). Насколько мне известно, куча в 1024 метра на самом деле довольно большая для веб-приложения и должна быть более чем достаточно для большинства из них. Просто остерегайтесь основной продолжительности GC.

0 голосов
/ 04 февраля 2010

@ wds: Определенно не рекомендуется устанавливать максимально возможный максимум кучи по двум причинам:

  1. Большие кучи делают полный сбор данных дольше. Если у вас включено сканирование PermGen, большое пространство PermGen также займет больше времени для GC.
  2. JBoss AS в Linux может оставлять неиспользуемые дескрипторы ввода-вывода открытыми достаточно долго, чтобы заставить Linux принудительно очистить их, блокируя все процессы на машине до завершения (может занять более 1 минуты!). Если вы забудете отключить сканер горячего развертывания, это будет происходить гораздо чаще.

Это может произойти, возможно, один раз в неделю в моем приложении, пока я:

  1. уменьшилось на -Xms до точки, когда запуск JBoss AS начал замедляться
  2. уменьшилось -Xmx до точки, где полные GC происходили чаще, поэтому очистка дескриптора ввода-вывода в Linux остановилась

Для разработчиков, я думаю, можно увеличить PermGen, но при работе вы, вероятно, захотите использовать только то, что необходимо, чтобы избежать длительных пауз GC.

0 голосов
/ 28 августа 2009

Куча: начните с 512 МБ, установите ограничение на то место, куда, как вы полагаете, ваше приложение никогда не попадет, и не заставляйте сервер перезагружаться.

Permgen: Это обычно достаточно стабильно, когда приложение читает все классы, используемые в приложении. Если вы протестировали приложение, и оно работает с 256 МБ, оставьте его так.

...