Размер сеанса в приложении Java EE/Seam

У меня проблемы с размером моих сессий с моим веб-приложением, основанным на Jboss Seam Framework. Я использую MessAdmin для расследования, и он сообщает, что как только пользователь входит в систему, размер его сеанса увеличивается с 50 КБ до 55 МБ (ой). Это кажется сумасшедшим, поскольку я оставляю очень мало объектов в области разговора / сеанса.

Вывод MessAdmin затрудняет определение причины. Я надеюсь, что кто-то с большим опытом работы с этим инструментом сможет указать мне правильное направление.

Вот вывод:

http://locuslive.com/webdrive/messadmin1.png

http://locuslive.com/webdrive/messadmin.png

2 ответа

Решение

Выглядит достаточно просто: в этом списке есть несколько объектов, размер которых превышает 50 МБ, и от них нужно избавиться.

Ваши объекты приложения (любой список задач) могут быть не большими, но если какой-либо из них содержит ссылку на один из этих больших объектов, они также будут добавлены в ваш сеанс. Вам нужно пройтись по объектам приложения с помощью мелкой зубной щетки, чтобы отсеять любые ссылки на любые объекты, упомянутые в этой распечатке, особенно если они не являются другими объектами вашего приложения. Может быть целесообразным отметить такие ссылки (поля) как transient вместо того, чтобы полностью избавиться от них, но я не уверен, что это даст желаемый эффект.

Просто чтобы сделать вещи немного более понятными: MessAdmin упоминает кучу больших объектов, но некоторые из них, вероятно, являются объектами вашего приложения и сами по себе не очень большие, если бы не тот факт, что они получают доступ к чему-то еще, что не является объектом приложения и большой.

Объяснение общих объектов можно найти в [документации MessAdmin] [1]

[1]: http://messadmin.sourceforge.net/#[[HttpSession size]]

Другие вопросы по тегам