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