Я работаю над приложением, которое имеет дерево навигации, которое является сессионным компонентом. Каждый раз, когда я вызываю страницу, содержащую этот компонент, мое использование памяти будет увеличиваться. Однако, после нескольких часов бездействия, память все еще не освобождена. Есть ли идеи, почему это происходит, или обходные пути?Ошибка использования памяти JSF при использовании сессионных компонентов
ответ
Вы можете явно установить тайм-аут сеанса в дескрипторе развертывания или сделать это программно (хотя вы, вероятно, не хотите делать это в приложении JSF).
В конечном счете, это управление контейнером - серверу удается освободить ресурсы независимо от логических параметров истечения срока действия.
Вы можете помочь диагностировать происходящее с помощью слушателей. Например, вы можете реализовать свой класс компонента HttpSessionBindingListener. Он будет уведомлен, когда он будет добавлен или удален из сеанса. Кроме того, вы можете наблюдать за всеми событиями сеанса, используя HttpSessionAttributeListener (JSF может использовать сеанс для управления состоянием просмотра, поэтому ожидайте некоторые записи, которые вы сами не определили). Сеанса HTTP определяется в web.xml:
<listener>
<display-name>MyListener</display-name>
<listener-class>
somepackage.MySessionDiagnosticListenerImpl
</listener-class>
</listener>
Если вы просто оставить сервер неактивен, это может быть просто, что он использует другие запросы сеанса для запуска сеанса с истекшим сроком очистки и вы наблюдаете деталь реализации. Или может быть утечка памяти, потому что вы установили ссылку на объект в некотором неуправляемом классе.
Вам действительно нужно использовать профилировщик, чтобы узнать, что происходит с памятью в приложении java. Профайлер Eclipse довольно хорош.
Если его сеансовый компонент не должен быть создан для каждого попадания на страницу внутри той же сессии.
Вы также должны иметь в виду, что GC не будет собирать классы сразу. И GC не обязательно зависит от времени.
- 1. Ошибка использования памяти при использовании приложения?
- 2. JSF ajax проблема с производительностью при использовании большого количества компонентов
- 3. Вызов метода сессионных компонентов, развернутых на удаленном компьютере
- 4. jsf 2 проблема составных компонентов при использовании f: facet
- 5. Ошибка памяти при использовании read_csv
- 6. Ошибка памяти при использовании memcpy?
- 7. Ошибка памяти при использовании keras
- 8. Ошибка памяти при использовании write.csv
- 9. Ошибка памяти heap памяти при использовании webview
- 10. Ошибка при отсутствии памяти при использовании AnimationDrawable
- 11. Ошибка при создании компонентов jsf динамически с помощью Tomcat 5.0
- 12. Средство визуализации компонентов JSF
- 13. Ошибка памяти Java при использовании массива
- 14. Ошибка «из памяти» при использовании процедур хранения
- 15. Ошибка памяти при использовании Numpy текст нагрузки
- 16. Ошибка памяти Python при использовании random.sample()
- 17. Ошибка памяти при использовании исполнителей в java
- 18. Ошибка памяти при использовании API Карт Google
- 19. Ошибка доступа к памяти при использовании QNetworkManager
- 20. Ошибка памяти при использовании растрового изображения
- 21. Ошибка выделения памяти при использовании mclapply
- 22. Ошибка памяти при использовании множества растровых изображений
- 23. Matlab Ошибка при использовании vertcat Недостаточно памяти
- 24. Android: ошибка памяти при использовании растровых изображений
- 25. Python: Ошибка памяти при использовании Matplotlib
- 26. Ошибка повреждения памяти при использовании auto_ptr
- 27. C++ Ошибка инициализации памяти при использовании stringstream
- 28. Ошибка памяти при использовании const char *?
- 29. Фары компонентов JSF
- 30. JSF PrimeFaces рендеринга компонентов