2015-08-24 3 views
0

У меня есть веб-приложение, которое работает на Glassfish. Появляются новые потоки из кода веб-приложения. Я запускаю команду «top» в linux и вижу список процессов glassfish.jar. Как определить, что это мой поток Я запускаю из кода или этой системы glassfish темы?утечки памяти на стеклянной рыбке

Второй вопрос заключается в следующем:

App начала и после 20-20 минут 1-4 theads имеют 20-90% от мощности процессора (общий, я на 200% - 2 ядра) Итак, как я могу найти утечки памяти, если проблема остается в моем коде?

Примечание: я не смог открыть свой веб-интерфейс приложения, glassfishadmin console и другие возможности.

+0

Для меня это не проблема с утечкой памяти. Может быть, проблема конфигурации кучи –

+0

на этой машине работает с аналоговым приложением с другим выполнением моего кода, я думаю, что проблема остается в коде – user3569530

ответ

0

Here у вас есть документация от Oracle о том, как установить и начать с профилированием на Glassfish

0

Если GlassFish экземпляр запускается из памяти, он не может быть остановлен asadmin. Вы должны убить его, используя ваши инструменты os. (kill/taskmanager/что угодно).

Чтобы отслеживать утечки памяти, используйте VisualVM. Вы можете отслеживать свое приложение, получать снимки кучи и искать корни gc. Вы также можете профилировать свое приложение и находить горячие точки (где больше всего времени тратится).

Но будьте осторожны: Glassfish сама по себе является губкой памяти и не освобождает память должным образом при развертывании/перераспределении. Чтобы обойти эти внутренние проблемы в стеклянную рыбку, вы можете использовать ContextListener, чтобы сориентироваться и освободить крючки памяти, такие как этот: A ContextListener to free glassfish memory leaks

Если потоки, вызвавшие ваши нагрузки, являются вашими потоками, передумайте свой проект: приложение JEE не должно запускать потоки. Обычно вы можете использовать ту же функциональность (начальные потоки), используя таймер EJB.

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