天天看點

java對象的幾種引用方式

1.強引用

User user =new User( );

在日常編碼中,使用最廣的引用方式。

隻要隻要強引用還在,對象就不會被垃圾回收器回收。

可以通過将引用置空的方式,讓jvm回收器回收。

2.軟引用

SoftReference ref = new SoftReference new User( );

有用但是并非必須的對象可以使用弱引用。

對于軟引用關聯着的對象,隻有在記憶體不足的時候JVM才會回收該對象。

是以,這一點可以很好的用來解決OOM的問題。

3.弱引用

weakReference ref = new WeakReference new User( );

隻具有弱引用的的生命周期較軟引用更加短暫。

科技回收器線程掃描發現了隻具有弱引用的對象,不管目前記憶體空間是否足夠,都會回收它的記憶體。

是以,弱引用更适合作為緩存資料,又不想影響對象收集的地方。ThreadLocl中ThreadLocalMap采用的即是弱引用作為key.

4.虛引用(幻影引用)

PhantomReference<User> ref = new PhantomReference<User>( new User( ), referenceQueue);

繼續閱讀