Java中的四种引用

Java中四种引用
  1. 强引用(StrongReference):最普遍的引用,如果一个对象具有强引用,那么GC绝对不会回收它,当内存不足时候,Java虚拟机宁愿OOM,使程序终止,也不会回收强引用的对象来解决内存不足问题
  2. 软引用(SoftReference):如果一个对象只具有软引用,那么内存空间足够就不回收它;如果内存不足就回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可以用来实现内存敏感的高速缓存
  3. 弱引用(WeakReference):弱引用和软引用的区别在于,只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现只具有弱引用的对象,不管当前内存空间是否足够,都会回收它的内存。不过,由于垃圾回收器线程是一个级别很低的线程,因此不一定很快发现那些只具有弱引用的对象
  4. 虚引用(PhantomReference),形同虚设,与其它几个引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,任何时候都可以被回收。虚引用主要用来跟踪对象被来及回收器回收的活动
    ;虚引用和弱引用的区别在于:虚引用必须(弱引用即软引用可以,引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中)和引用队列联合使用,当垃圾回收器准备回收一个对象时,就会在回收对象内存之前,把这个引用加入到与之关联的引用队列
    实例:
    在Handler中使用了WeakReference,一旦Activity销毁了,再做异步的请求没有什么意义,内存泄漏的问题不允许存在,一旦gc发现,不管内存是否充足,处理掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章