Вопрос

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

-Xms1024m & # 8211; Xmx1024m -XX: MaxPermSize = 256 м

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

Это было полезно?

Решение

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

  

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

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

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

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

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

Другие советы

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

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

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

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

    <Ол>
  • уменьшил -Xms до точки, где запуск JBoss AS начал замедляться
  • уменьшил -Xmx до точки, где полные GC происходили чаще, поэтому очистка дескриптора ввода / вывода в Linux остановилась
  • Для разработчиков, я думаю, это нормально, если вы хотите увеличить PermGen, но в производстве вы, вероятно, захотите использовать только то, что необходимо, чтобы избежать длительных пауз GC.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top