Высокое использование памяти сеанса в Mojarra

У меня есть веб-приложение, построенное на Mojarra (JSF 2). Приложение развернуто в WebSphere 7. Использование сеанса для моего приложения очень велико. Я использую bean-компоненты с областью видимости, и некоторые страницы значительно велики. Мой веб-xml настроен на сохранение 5 представлений в сеансе.

<context-param>
  <param-name>com.sun.faces.numberOfViewsInSession</param-name>
  <param-value>5</param-value>
</context-param>
<context-param>
  <param-name>com.sun.faces.numberOfLogicalViews</param-name>
  <param-value>5</param-value>
</context-param>

Я ничего явно не добавляю в session. Тем не менее некоторые сеансы в моем приложении достигают 60 МБ.

Когда я делаю анализ hepdump, он показывает, что хэш-карта сеанса занимает всю память. Есть ли способ определить, что именно находится в хранилище сеансов?

Например. Сохраненная куча com.ibm.ws.session.store.memory.MemorySession @ 0x700000057890108 для хранилища памяти xxx в /xxx/yyy равна 66209288.


person dkaustubh    schedule 30.04.2013    source источник


Ответы (1)


Если вы анализируете дамп кучи с помощью eclipse-memory-analyzer, вы сможете развернуть свой com.ibm.ws.session.store.memory.MemorySession, чтобы найти виновника, как описано в этой записи блога: Сеансы Richfaces Eating Memory — Анализ утечки памяти

введите здесь описание изображения

person fglez    schedule 30.04.2013
comment
Спасибо! В моем случае это массив объектов javax.faces.component.UIOutput. - person dkaustubh; 30.04.2013