- PR -

コンスタント値専用クラスについて

投稿者投稿内容
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2003-03-03 15:43
>Out of Memoryを防ぐためにはスレッドで周期的にメモリを監視し、もしある
>程度メモリが少なくなったらSystem.gc()を・・
これは無意味です.
System.gc()を呼ぼうと呼ぶまいと,必要があればGCが自動的に
回収します.自動的に回収されないとすれば,Sysmte.gc()を呼んでも
回収されません.
#自動的に回収されるけど,System.gc()を呼んでも回収されないと
#いう可能性はある.

それにtype safe enumのインスタンスは一組しか作らないので,通常は
まず問題になりません.問題があるとすれば,型の数が優に数万とか数十万
以上のオーダーになる場合ですが,これは既にenumで扱うべきものでは
ないと思います.
raccoon
ベテラン
会議室デビュー日: 2002/12/18
投稿数: 58
投稿日時: 2003-03-03 17:25
引用:

悪夢を統べるものさんの書き込み (2003-03-03 15:43) より:

>Out of Memoryを防ぐためにはスレッドで周期的にメモリを監視し、もしある
>程度メモリが少なくなったらSystem.gc()を・・
これは無意味です.
System.gc()を呼ぼうと呼ぶまいと,必要があればGCが自動的に
回収します.自動的に回収されないとすれば,Sysmte.gc()を呼んでも
回収されません.
#自動的に回収されるけど,System.gc()を呼んでも回収されないと
#いう可能性はある.

それにtype safe enumのインスタンスは一組しか作らないので,通常は
まず問題になりません.問題があるとすれば,型の数が優に数万とか数十万
以上のオーダーになる場合ですが,これは既にenumで扱うべきものでは
ないと思います.




というか,そもそもstatic finalなのでガーベッジコレクタでは解放されないのでは?
ClassLoaderいじくって,クラスのunloadとかすればできるんでしょうか?
# やったことない(考えたこともない)のでわかりませんが・・・


あとTypesafe enumは,static finalよりはメモリを消費することは確かですよね。
static finalですら使用量を心配しているくらいですから,
Typesafe enumに乗り換えるとしたら,ちゃんと使用量を確認してからがよいかと。
# とはいえ,「心配」なのと「問題」なのは違いますから,
# この場合は「実際には問題ない」ほうだとは思いますが。

DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2003-03-03 18:09
引用:

raccoonさんの書き込み (2003-03-03 17:25) より:

というか,そもそもstatic finalなのでガーベッジコレクタでは解放されないのでは?



もともとで示されているソースでは、static finalなのは配列への参照変数です。なので、不変なのは変数の値(参照先を示す値)で、参照されている配列自体はガベージコレクションが走るごとに解放されるのではないかと推測します。

いずれにせよ、いくらOutOfMemoryErrorが出ていようとも、ガベージコレクションを自力で制御しようなどと言うことは、「上級者」以外は考えないほうが良いのは間違いありません。
少なすぎる知識と誤った推論からデタラメな結論を出し、無意味なコーディングと無益なテストで時間を無駄にしているのを何件も見ました。一言声をかけてくれればやらずにすんだのに。むなしい。
うのきち
ベテラン
会議室デビュー日: 2003/02/17
投稿数: 55
投稿日時: 2003-03-03 18:48
引用:

DaikiRyutoさんの書き込み (2003-03-03 18:09) より:
引用:

raccoonさんの書き込み (2003-03-03 17:25) より:

というか,そもそもstatic finalなのでガーベッジコレクタでは解放されないのでは?



もともとで示されているソースでは、static finalなのは配列への参照変数です。なので、不変なのは変数の値(参照先を示す値)で、参照されている配列自体はガベージコレクションが走るごとに解放されるのではないかと推測します。
。むなしい。



??? 参照が残っているのに、ガーベージコレクションの対象になると推測されたのは何故ですか?

そもそも、それでガーベージコレクションされちゃったら、次にアクセスされた場合に、違うオブジェクトが生成される事になり、finalがついている事に違反しますよね。
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2003-03-03 20:13
引用:

うのきちさんの書き込み (2003-03-03 18:48) より:

??? 参照が残っているのに、ガーベージコレクションの対象になると推測されたのは何故ですか?

そもそも、それでガーベージコレクションされちゃったら、次にアクセスされた場合に、違うオブジェクトが生成される事になり、finalがついている事に違反しますよね。




その通りです(爆)
何をボケたんだ、私は……。
突っ込みありがとうございました。

#こういう(明らかな誤りがあった)場合、元記事はコメントアウトでもしておいて方が良いのでしょうか……。

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