2010-06-07 3 views
0

Я несу ответственность за поддержку одного сервера, на котором работает веб-приложение Java EE. Jboss 4.0 используется как контейнер сервлетов, а JVM запускается с достаточной памятью для запуска приложения (я думаю):Проект Java EE, слишком много памяти?

если ["x $ JAVA_OPTS" = "x"]; то JAVA_OPTS = "- сервер -Xms1500m -Xmx1500m -Dsun.rmi.dgc.client.gcInterval = 3600000 -Dsun.rmi.dgc.server.gcInterval = 3600000" фи

я должен перезапустить JBoss каждый день, потому что Java-процесс начинает использовать много памяти, поэтому приложение работает очень медленно.

Я просто хотел бы знать, может ли это быть проблемой дизайна или проблемы конфигурации jboss.

PD: Я знаю, что написал только несколько деталей, но это то, что у меня есть.

Спасибо.

ответ

1

Не существует фундаментальной проблемы с использованием большого количества памяти. Если размер виртуальной машины слишком велик, и вы создаете много объектов, которые нужно собрать мусором, вам нужно будет делать GC более часто, что означает полный GC более часто. Полный GC на действительно большой виртуальной машине может вызвать «зависания» до нескольких секунд. Для некоторых приложений это может быть реальной проблемой. В других - нет.

Вы хотите отслеживать размер виртуальной машины с течением времени, и любой профайлер сделает это. VisualVM поставляется с Java 6u14 (iirc) или выше, и он это сделает. Если вы будете наблюдать за своим приложением с течением времени, вы увидите, что объем памяти увеличивается, а затем внезапно падает, поскольку временные объекты собираются с мусором, образуя шаблон «пила».

Теперь со временем, который может повыситься (т.е. общий наклон вверх). Это может указывать или не указывать на проблему. Это может означать, что вы просачиваете память. Это может означать, что вы держите ссылки на объекты, которые вам просто не нужны, чтобы они не были GCed. Или это может быть не проблема. Это зависит от того, что вы делаете. Если, к примеру, вы кешируете больший и больший объем данных в памяти с течением времени, это может быть вовсе не утечка, но это может указывать на архитектурную проблему в том, что вы не очищаете кеши.

1,5 ГБ, однако, не так много памяти, поэтому просто иметь свою виртуальную машину, размер которой сам по себе не является причиной необходимости перезапускать его каждый день. Похоже, у вас другая проблема, и липкие ссылки - наиболее вероятный преступник.

Смежные вопросы