@RequestScoped
および@SessionScopedBean
マネージドBeanのライフサイクルは、基本的にHttpRequest
およびHttpSession
それぞれ。 JSFは@ViewScopedBean
のライフサイクルをどのように管理しますか?ビューが作成されたときに作成され、別のビューへのポストバックがあるまで使用できることを私は知っています。しかし、その観点から移動した直後に収集されたガベージではないことがわかりました。
それはいつ破壊されます
null
以外の結果のポストバックが実行されました。
または、セッション内の(論理)ビューの数を超え、特定のビューがLRUチェーンの最初のビューです(Mojarraでは、com.Sun.faces.numberOfViewsInSession
およびcom.Sun.faces.numberOfLogicalViews
コンテキストパラメーターで構成可能で、それぞれデフォルト値があります15の)、
または、セッション内のアクティブビュースコープの数を超えました(Mojarraでは、ハードコードされた25の制限です)。 JSF 2.2メモリ消費:Mojarraが最後の25ビューのViewScoped Beanをメモリに保持するのはなぜですか?)
または、セッションの有効期限が切れています。
したがって、別のページへのGETリンクをクリックしたり、ページを更新したり、ブラウザタブを閉じたりした結果としてページがアンロードされても、notは破棄されません。 /窓。上記の条件のいずれかが満たされるまで、Beanは存続します。とにかくアンロード中にそれを破壊するには、代わりに OmniFaces @ViewScoped
を使用することを検討してください。