- PR -

セッション変数について。超・初歩的ですがお願いします。

1
投稿者投稿内容
sirouto
ベテラン
会議室デビュー日: 2004/11/05
投稿数: 50
投稿日時: 2005-02-28 16:28
ASP.NET(VB)で開発をしております。

セッション変数を宣言し、使った後の開放方法について。


Session("TEST") = nothing

だけだとメモリが開放されないのでしょうか?

Session.Remove("TEST")

とすればメモリが開放されるのでしょか?どちらか正しいのでしょうか?
両方列挙する場合には順序的には

Session("TEST") = nothing
Session.Remove("TEST")
とすればよいのでしょうか?

どうか宜しくお願い致します。m(_ _)m
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-02-28 18:02
普通、メモリの解放はガベージコレクタに任せます。

どうしてもすぐにメモリを解放する必要があるならば、Nothingをセットして
GC.Collectを呼びます。(これはSessionに限った話ではありません)

が、必ずしも解放されるわけではありません。
ガベージコレクションの詳しい動作は、MSDN等を調べてみてください。

気になるならば、GC.GetTotalMemoryを呼び出して調べてみてください。


[ メッセージ編集済み 編集者: kanai 編集日時 2005-02-28 18:12 ]
Vacant-Eyes
ベテラン
会議室デビュー日: 2004/08/15
投稿数: 97
投稿日時: 2005-02-28 18:14
Session変数を使った状態の保持はクライアントのcookieを使っています。
ですので、特定のSession変数を破棄するにはRemoveのみでよいと思います。

また、Session自体を破棄する場合はSession.Abandon()メソッドがあります。
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-03-01 09:12
クライアントのCookieが利用されるのはSessionIDの保持のみで、
実データはサーバー側(インプロセス、State Server、SQL Server)に
あるのでは??

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconsessionstate.asp

[ メッセージ編集済み 編集者: kanai 編集日時 2005-03-01 09:14 ]
sirouto
ベテラン
会議室デビュー日: 2004/11/05
投稿数: 50
投稿日時: 2005-03-01 10:22
kanai 様
Vacant-Eyes 様

返答ありがとうございます。m(_ _)m
GC.Collectについて調べました。

http://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html

通常は使用しなくなったメモリ領域は勝手に開放されていく様でした。
すぐに開放!という仕様でもないので、Removeだけさせる処理にしようと思います。

とても勉強になり、本当にありがとうございました。m(_ _)m
1

スキルアップ/キャリアアップ(JOB@IT)