Как профилировать использование памяти сеанса в веб-приложении Java / Seam? - PullRequest
2 голосов
/ 02 августа 2009

Есть ли способ / инструмент для профилирования использования памяти за сеанс в веб-приложении Java?

Более конкретно, я использую Seam, и у меня есть несколько объектов, которые являются специфическими для пользователя или для текущего сеанса пользователя, поэтому они настроены для сохранения в сеансе пользователя.

Некоторое время назад моему приложению не хватало памяти при обращении к определенному количеству пользователей, поэтому я перемещал различные вещи из сеанса и профилировал, пока не освободил память. Однако измерения памяти были на уровне JVM. Мне бы очень хотелось, чтобы отслеживать использование памяти на уровне сеанса, исключая любое использование памяти без сеанса.

Приятно иметь:

  • Общее использование памяти для http-сессий (которое я могу сравнить с использованием всей памяти приложения)
  • Использование памяти за сеанс, даже среднее значение.

Ответы [ 2 ]

2 голосов
/ 03 августа 2009

Посмотрите на http://messadmin.sourceforge.net/.

1 голос
/ 19 сентября 2009

Я использую Eclipse Mat для диагностики подобных проблем. Если у вас большие сессии, диспетчер сеансов отображается в отчете «Дерево доминаторов». Вы можете легко различить общее использование памяти по сеансам и другим частям приложения.

Вы можете перейти к отдельным сеансам и посмотреть, сколько памяти используется каждым из них. Вы также можете открыть каждый отдельный сеанс и проверить каждый объект в сеансе.

Также неплохо бы взглянуть на другие отчеты, которые предоставляет MAT. Иногда результаты удивительны - например, у нас была проблема с использованием памяти, которая оказалась проблемой загрузчика классов JRE.

...