- PR -

static変数は、GCの対象ですか?

投稿者投稿内容
かい
常連さん
会議室デビュー日: 2003/05/27
投稿数: 34
投稿日時: 2004-09-10 10:45
かいです。
coasmさん、返信ありがとうございます。

わかりやすくて、とてもすっきりしました。
とりあえず、安心しました。

引用:

(b) サーブレットの場合だと、アプリがアンロードされるとシングルトンも消えてしまう。
 しかし、これは「まさに期待した通りの動作」なので問題ない。



もしよろしければ、「アプリがアンロードされる」という部分が、
理解できないので、解説して頂けないでしょうか?
よろしくお願いします。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-09-12 22:32
返答が遅くなりました。

サーブレットは、クラスが(static変数やsingletonインスタンスも)GCされてしまう身近な例
として挙げました。

開発中は、「プログラムの内部状態をマッサラにしてやり直す」作業が多発します。
通常のアプリの場合ならJVMを起動し直せば良いのですが、
サーブレットの場合はアプリケーションサーバを再起動すると時間がかかるので、
アプリをアンロードする機能をサーバが備えていることが多いです。
サーバの管理画面にアクセスして、「このアプリケーションをアンロード」みたいな操作をします。

実際に解析したわけではないのですが、
アプリをアンロード
→アプリケーション毎のClassLoaderを再構築
→古いClassLoaderと、それがロードしたクラス/オブジェクトはすべてGCされる。
という仕掛けなのだろうと、私は理解しています。
かい
常連さん
会議室デビュー日: 2003/05/27
投稿数: 34
投稿日時: 2004-09-15 09:29
返信ありがとうございます。
(体調を崩してしまったため、返事が遅れてしまい、
 すみません)

サーブレットの件、理解できました。
どうもありがとうございました。

今後ともよろしくお願いします。

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