Размер сеанса в приложении Java EE/Seam
У меня проблемы с размером моих сессий с моим веб-приложением, основанным на Jboss Seam Framework. Я использую MessAdmin для расследования, и он сообщает, что как только пользователь входит в систему, размер его сеанса увеличивается с 50 КБ до 55 МБ (ой). Это кажется сумасшедшим, поскольку я оставляю очень мало объектов в области разговора / сеанса.
Вывод MessAdmin затрудняет определение причины. Я надеюсь, что кто-то с большим опытом работы с этим инструментом сможет указать мне правильное направление.
Вот вывод:
2 ответа
Выглядит достаточно просто: в этом списке есть несколько объектов, размер которых превышает 50 МБ, и от них нужно избавиться.
Ваши объекты приложения (любой список задач) могут быть не большими, но если какой-либо из них содержит ссылку на один из этих больших объектов, они также будут добавлены в ваш сеанс. Вам нужно пройтись по объектам приложения с помощью мелкой зубной щетки, чтобы отсеять любые ссылки на любые объекты, упомянутые в этой распечатке, особенно если они не являются другими объектами вашего приложения. Может быть целесообразным отметить такие ссылки (поля) как transient
вместо того, чтобы полностью избавиться от них, но я не уверен, что это даст желаемый эффект.
Просто чтобы сделать вещи немного более понятными: MessAdmin упоминает кучу больших объектов, но некоторые из них, вероятно, являются объектами вашего приложения и сами по себе не очень большие, если бы не тот факт, что они получают доступ к чему-то еще, что не является объектом приложения и большой.
Объяснение общих объектов можно найти в [документации MessAdmin] [1]
[1]: http://messadmin.sourceforge.net/#[[HttpSession size]]