Javaにはいわゆる「参照」以外にも3種類の参照を使用することができる。前から少しは気になっていたのだけど、今回少し調べてみたので書き留めておく。
強参照
いわゆる普通の「参照」。変数からオブジェクトを参照する際の参照はすべてこれ。強参照されているオブジェクトはガベージコレクションの対象にはならない。
ソフト参照
ガベージコレクション時に「条件(ヒープ使用率が高いなど)によって」オブジェクトが回収される参照。java.lang.ref.SoftReferenceクラスによって実現することができる。「Java魂」によれば正しく実装されているVMは少ないらしい。
弱参照
ガベージコレクション時に「必ず」オブジェクトが回収される参照。java.lang.ref.WeakReferenceクラスによって実現することができる。
ファントム参照
回収済みのオブジェクトに対する参照を示す。java.lang.ref.PhantomReferenceクラスによって実現することができる。ガベージコレクタによる回収を監視するのに使用できるらしい。
参考:
0 Comments:
Post a Comment