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.