Высокое использование памяти сеанса в Мохарре
У меня есть веб-приложение, построенное на 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>
Я не добавляю ничего явно в сессию. Тем не менее, некоторые из сессий в моем приложении размером до 60 МБ.
Когда я делаю анализ hepdump, он показывает, что сессия hashmap забирает всю память. Есть ли способ определить, что именно находится в хранилище сеансов?
Например, сохраненная куча com.ibm.ws.session.store.memory.MemorySession @ 0x700000057890108 для хранилища памяти xxx в /xxx/yyy составляет 66209288.
1 ответ
Если вы проанализируете свой дамп кучи с помощью /questions/tagged/eclipse-memory-analyzer, вы сможете развернуть свой com.ibm.ws.session.store.memory.MemorySession
чтобы найти виновника, как объяснено в этой записи блога: Сессии Richfaces Съедая память - Анализ утечки памяти