- - PR -
Sessionについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 よろしくお願いいたします。 | ||||
|
投稿日時: 2007-01-31 11:52
Sessionはデフォルトの状態だとサーバのメモリ上に確保されます。
設定でSQLサーバ内に格納させることも可能です。 また、Sessionはユーザ毎に確保されるので、例え1つしか使ってなくても、多くの ユーザが一度に利用すればメモリーが圧迫されて正常に動作しない、という状況が 起きることは考えられます。 .NET Frameworkではメモリの開放は明示的にはできないので、領域への参照を はずして(nullいれるとか)で開放はGCにおまかせですかね。 すべてのSessionオブジェクトを利用しないのであれば、セッションを終了させて しまうのが手軽だと思います。 | ||||
|
投稿日時: 2007-01-31 13:53
Session.Remove | ||||
|
投稿日時: 2007-01-31 18:04
どっとねっとふぁんさん、まるくさんありがとうございます。
結構Sessionにデータを入れるのでとても心配でした。 メモリ開放はGCまかせというのはちょっとつらいですが、 必要ないときにSession.Removeしてしまうのも手かもしれませんね。 とても勉強になりました。 | ||||
|
投稿日時: 2007-01-31 18:46
あと、キャッシュも上手に使いましょう。 _________________ | ||||
|
投稿日時: 2007-01-31 19:03
> 結構Sessionにデータを入れるのでとても心配でした。
どの程度の数のユーザが利用するのかにもよりますが、場合によってはDBにデータを 登録し、サーバのメモリの負荷を軽減する、といったことも考える必要があるかも しれませんね。 |
1