2016-05-02 7 views
-1

I現在、weldを使用するjavaEEプロジェクトで動作しています。Cdi implementations.iは、アプリケーションのメモリリークとメモリ管理を分析するタスクを割り当てました。私はガベージコレクタとcdiプロキシオブジェクトに関する次の側面で混乱しています。私はCdiセッションスコープLoginControllerのBeanを持っています。トウまたは2人以上のユーザのログインが疑わしい時よりもLoginController Beanのそれぞれの数が作成されます。このLogin Controller Beanが他のBeanにも注入され、その他のBeanにアクセスするとLogin Controllerへのプロキシが作成され、 LoginControllerのどれだけ多く作成されても、LoginControllerのProxyオブジェクトの1つのインスタンスのみが作成されます。javaeeのガベージコレクタによるCdiプロキシオブジェクトの削除

セッションがタイムアウトしたときにLoginController Beanがガベージコレクションを取得するため、Login Controllerが作成されてもガベージコレクトされることはありません。私はなぜ知って欲しい.. ..?

答えて

0

実行時にプロキシオブジェクトが作成され、CDIによって作成されたBeanを表します。セッション(セッションID)とそれらの各プロキシの背後にあるインスタンスの間のセッションレベルでの参照があります。代理人は、渡されたものであり、本質的に常に存在します。

これは、たとえば、手動で挿入する依存スコープBeanを明示的に破棄する必要があるためです。彼らの代理は永遠に続くだろう。

+0

私のsecnerioに基づいて詳細を教えてください –

+0

私の答えから明確でないものを明確にしてください。 –

関連する問題