2009年1月11日日曜日

Java4つの参照

Javaにはいわゆる「参照」以外にも3種類の参照を使用することができる。前から少しは気になっていたのだけど、今回少し調べてみたので書き留めておく。

強参照

いわゆる普通の「参照」。変数からオブジェクトを参照する際の参照はすべてこれ。強参照されているオブジェクトはガベージコレクションの対象にはならない。

ソフト参照

ガベージコレクション時に「条件(ヒープ使用率が高いなど)によって」オブジェクトが回収される参照。java.lang.ref.SoftReferenceクラスによって実現することができる。「Java魂」によれば正しく実装されているVMは少ないらしい。

弱参照

ガベージコレクション時に「必ず」オブジェクトが回収される参照。java.lang.ref.WeakReferenceクラスによって実現することができる。

ファントム参照

回収済みのオブジェクトに対する参照を示す。java.lang.ref.PhantomReferenceクラスによって実現することができる。ガベージコレクタによる回収を監視するのに使用できるらしい。

参考:

0 Comments: