Жизненный цикл из @RequestScoped
и @SessionScopedBean
управляемых компонентов управляются самой Servlet контейнер, так как они в основном хранятся в качестве атрибута HttpRequest
и HttpSession
соответственно. Как JSF управляет жизненным циклом @ViewScopedBean
? Я знаю, что он создается, когда представление создается и может использоваться до тех пор, пока не появится обратная передача для другого представления. Но я узнал, что это не мусор, собранный сразу же после того, как мы перейдем от этой точки зрения.Как и когда объект @ViewScoped уничтожен в JSF?
ответ
Он будет разрушен, когда
обратная передача с не-
null
исходом был выполнен,или число (логических) видов в сессии превысил и конкретный вид является первым в цепи LRU (в Mojarra, который настраивается параметрами
com.sun.faces.numberOfViewsInSession
иcom.sun.faces.numberOfLogicalViews
, каждый из которых имеет значение по умолчанию 15),или, nu (в Моджаре, это жесткий диск 25), см. также JSF 2.2 Memory Consumption: Why does Mojarra keep the ViewScoped Beans of the last 25 Views in Memory?
или, сессия истек.
Он, таким образом, не быть уничтожены, когда страница выгружается в результате нажатия на ссылку GET на другую страницу или обновить страницу или закрыть браузер вкладку/окно. Боб будет жить так долго, пока не будет удовлетворено одно из условий, описанных выше. Чтобы уничтожить его во время разгрузки в любом случае, вместо этого используйте вместо этого OmniFaces @ViewScoped
.
Что вы подразумеваете под LRU? а также что вы подразумеваете под * логическими * видами? – Geek
1) Да. Они хранятся на карте LRU, упорядоченной по последнему использованию. В последнее время используется первая запись. 2) См. Http://stackoverflow.com/questions/12562469/how-can-i-set-the-view-timeout/12564632#12564632 – BalusC
@BalusC, есть ли какие-либо решения для ускорения просмотра фасоли? будет ли справляться с обходами с помощью миндаля? –
После того, как метод управляемого управляемого компонента возвращает действительный результат действия в навигации, даже если он находится на одном и том же представлении, управляемый bean-объект с видимым видом будет мусором и воссоздан. Прочтите это http://balusc.blogspot.co.il/2011/09/communication-in-jsf-20.html, и здесь они хранятся: http://stackoverflow.com/a/9177769/617373 – Daniel
Ну, на самом деле, вы не должны быть в состоянии предсказать gc или это произойдет немедленно, не так ли? Но о просмотренных фасоли в mojarra см. Http://stackoverflow.com/a/13097208/1530938 – kolossus
сбор мусора является асинхронным. когда область обзора «уничтожена», она действительно «отмечена как готовая к сбору мусора», как и все другие объекты Java. Примечание: маркировка действительно является ссылочным числом 0 (т. Е. Помечена как «больше не используется»). – DwB