Ошибка нехватки памяти всякий раз, когда Tomcat перезагружает контекст веб-приложения MyFaces - PullRequest
0 голосов
/ 29 ноября 2011

Я недавно перешел на myfaces с помощью tomahawk (после этого успешного потока ссылка ), и у меня возникают ошибки памяти, когда я пишу новый код, а приложение (Tomcat) перезагружаетконтекст.Это общее сообщение перезагрузки: «INFO: Перезагрузка контекста с именем [/ Auctions] началась»

И через несколько секунд это выглядит так: "Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space"

Я знаю, что могу увеличитьпамяти (кстати, это должно быть сделано непосредственно в Tomcat или где-то в Eclipse?), но эта ошибка нехватки памяти всплывала только после нескольких перезагрузок, и теперь она замедляет мою разработку.

Кроме того, я явно обеспокоен развертыванием.

Что мне делать?

РЕДАКТИРОВАТЬ:

Одна вещь, которая кажется связанной: я получаю 2 предупреждающих сообщения, как это:

"WARNING: Cannot serialize session attribute auctionsViewBean for session CB0149C43DF44F5AA6A084A022F1D418" 

сразу после

java.io.NotSerializableException: org.apache.catalina.session.StandardSessionFacade. 

И тогда происходит ошибка нехватки памяти.

Теперь AuctionsViewBean реализует Serializable, но я читаю здесь , что бин не может быть повторно сериализован в сеанс, если у него нет конструктора аргументов.У моего bean-компонента нет конструктора аргументов, но я устанавливаю в нем некоторые значения.Может ли это вызвать проблемы?

Если так - и в любом случае, действительно - как лучше всего установить значения в боб?Это в конструкторе или где-то еще в его жизненном цикле?

1 Ответ

0 голосов
/ 29 ноября 2011

Я помню этот вопрос в списке пользователей MyFaces давно. Предупреждения происходят, потому что у вас есть сессионный компонент, и этот компонент не реализует сериализуемый. Когда контекст перезагружается, Tomcat пытается сериализовать все внутри области сеанса, вызывая проблему.

Возможно вызвать java.lang.OutOfMemoryError, перезапускающее приложение несколько раз, но это вызвано тем, что Tomcat загружает и выгружает классы из своих загрузчиков классов, так что это произойдет в любом случае. Давным-давно были обнаружены некоторые проблемы, которые вызывают утечку памяти MYFACES-3158 , MYFACES-3001 , MYFACES-2942 , но обратите внимание, что эти проблемы были решены. Проблема в то время была вызвана тем, что были некоторые ссылки, которые не позволяли GC вернуть загрузчик классов tomcat webapp.

...