- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サーブレットコンテナのメモリ解放について)
サーブレットコンテナのメモリ解放について
このQ&Aのポイント
- サーブレットコンテナ上のメモリ解放について調査します。
- サーブレットコンテナの動作フローとメモリ解放に関する疑問を解決します。
- Java特有のガベージコレクションとサーブレットのメモリ解放について考えます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サーブレット自体のアンロードは、明示的にサーブレットをシャットダウンしたとき以外は行われません。 基本的に、サーバが生きてる限りずーっとオンメモリです。 リクエスト/レスポンスのラッパーオブジェクトは基本的には(サーブレットでブールするような仕組みで作らない限り)破棄されると思います。 オブジェクトの破棄は、Javaの仕様通りにGCが行います。
その他の回答 (3)
- OKapple
- ベストアンサー率56% (17/30)
回答No.4
>これはサーバをではなく、サーブレットをなのでしょうか、、 >次の文を拝読するとサーバをとも読み取れるのですが、、 正確には ・サーバは生きたままサーブレットを落とすことはできる。 ・サーバが死んだ場合サーブレットは落ちる。 です。 前者はサーブレットを更新したような場合です。 メモリ上のサーブレットは破棄されて、次にリクエストがあったときに(更新された)サーブレットが展開されます。
- thamansa
- ベストアンサー率40% (95/232)
回答No.2
推測ですが、オブジェクトをGCが動くまで放っておくコストと、オブジェクトプーリングしておくコストを考えるとおそらく前者、つまりRequestとResponseは使い捨てだと思います。
質問者
お礼
そうですね。たしかに放っておくメリットもありませんし。。 ご回答誠にありがとうございました。m(._.)m
- suzu_zou
- ベストアンサー率34% (112/327)
回答No.1
メモリ開放が行われるのはGCが走るとき、でしょうね。 以前勤めてたところで、非常に大規模なシステムがあって、 そこではGCが起こるまではメモリに残っているという説明でした。 (私は直接関与してなかったので詳細はわからないですが)
質問者
お礼
なるほどです。 となると大規模となればなるほどメモリ消費が心配になるところです。 ご回答誠にありがとうございました。m(._.)m
お礼
なるほどです。 すみません、1点だけ >明示的にサーブレットをシャットダウンしたとき以外は行われません。 これはサーバをではなく、サーブレットをなのでしょうか、、 次の文を拝読するとサーバをとも読み取れるのですが、、 やはり1リクエストにしか使われず、使い終わったら破棄すべきオブジェクトとなりそれをGCするという形なのですね。 ご回答誠にありがとうございました。m(._.)m