- PR -

Sessionについて

1
投稿者投稿内容
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2007-01-31 10:53
おせわになります。
VS2003、C#でWebアプリケーションを作成しています。
Sessionについて教えてください。
this.Session["hogehoge"]とするとSession領域を使用することができると思いますが、このSession領域はどのようにして領域確保されているのでしょうか。
this.Session["hogehoge"]やthis.Session["hogehoge2"]などいくつも作成するとメモリー不足などのエラーが発生するのでしょうか。また、フラグメンテーションのようなことが起こるのでしょうか。
また、this.Session["hogehoge"]を開放する方法があったら教えてください。

MSDNのSessionに関連するものを見たのですがよくわかりませんでした。
http://msdn2.microsoft.com/ja-jp/library/87069683(VS.80).aspx
よろしくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-31 11:52
Sessionはデフォルトの状態だとサーバのメモリ上に確保されます。
設定でSQLサーバ内に格納させることも可能です。

また、Sessionはユーザ毎に確保されるので、例え1つしか使ってなくても、多くの
ユーザが一度に利用すればメモリーが圧迫されて正常に動作しない、という状況が
起きることは考えられます。

.NET Frameworkではメモリの開放は明示的にはできないので、領域への参照を
はずして(nullいれるとか)で開放はGCにおまかせですかね。
すべてのSessionオブジェクトを利用しないのであれば、セッションを終了させて
しまうのが手軽だと思います。
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-01-31 13:53
引用:

また、this.Session["hogehoge"]を開放する方法があったら教えてください。



Session.Remove
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2007-01-31 18:04
どっとねっとふぁんさん、まるくさんありがとうございます。

結構Sessionにデータを入れるのでとても心配でした。
メモリ開放はGCまかせというのはちょっとつらいですが、
必要ないときにSession.Removeしてしまうのも手かもしれませんね。

とても勉強になりました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-01-31 18:46
引用:

ちびぐまさんの書き込み (2007-01-31 18:04) より:
どっとねっとふぁんさん、まるくさんありがとうございます。

結構Sessionにデータを入れるのでとても心配でした。
メモリ開放はGCまかせというのはちょっとつらいですが、
必要ないときにSession.Removeしてしまうのも手かもしれませんね。

とても勉強になりました。

辛いって、なにが、どういう理由で、辛いのでしょう?足りなくなったら勝手に回収してくれますよ?

あと、キャッシュも上手に使いましょう。
_________________
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-31 19:03
> 結構Sessionにデータを入れるのでとても心配でした。

どの程度の数のユーザが利用するのかにもよりますが、場合によってはDBにデータを
登録し、サーバのメモリの負荷を軽減する、といったことも考える必要があるかも
しれませんね。
1

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