2011-06-29 26 views
0

JSFアプリケーションがTomcat 6によってサービスされていて、セッションごとにマネージドBeanとして「セッション」スコープ内に割り当てられたviewScoped Beanを取得できます。問題は、セッションがアイドル状態で数時間を過ごした後でも、このBeanを格納するために使用されたメモリーが解放されていないように見えることです。セッションが無効でも、マネージドBeanの割り当てが解除されませんでした。

セッションが特定の期間(たとえば、10分)アイドル状態になった後でTomcatにこのメモリの割り当てを解除させる方法はありますか?そうでない場合は、このメモリをプログラムで手動で解放する方法はありますか?または、「セッション」スコープ内の「マネージドBean」の機能の1つで、サーバがシャットダウンするまでメモリ内に保持されます。 ありがとうございます!

ただし、viewScoped Beanの割り当てを解除することはできません。期限切れページのリンクをクリックすると、tomcatコンソールのログに、サーバー側のUIViewRootがまだ生きていることが表示されるためです。ログ: beforePhase-RESTORE_VIEW 1 afterPhase -RESTORE_VIEW 1時間:3 beforePhase-RENDER_RESPONSE 6 サーバプロセスのメモリが若干低下していませんでした。サーバーが比較的長い時間稼動している場合。アプリケーションの応答はとてもゆっくりで、ページャーが機能しないなど堅牢ではないようです。 であっても、サーバのシャットダウン、コンソールプリントアウト:

を割り当て解除することが16インスタンス(複数可)を待っているが、誰もがこのことを知っありますか?

+0

これはJSF/PrimeFacesの責任ではありません。それはGCの責任です。プロファイラを実行します。 – BalusC

答えて

0

セッションスコープの管理対象Beanは、セッションがタイムアウトしていないため、割り当て解除されません。デプロイメント記述子ファイル(web.xml)でセッションの許容タイムアウトを指定する必要があります。次の例は数分です。 10分後にセッションが無効になり、セッションスコープのBeanを破棄する必要があります。

<session-config> 
     <session-timeout>10</session-timeout> 
</session-config> 
+0

私はこのパラメータを知っていて、SessionはX分後にもタイムアウトしています。あなたは自分の答えを編集しているのがわかります。 – leo173

関連する問題