zoukankan      html  css  js  c++  java
  • 对象的四种引用关系

    1、强引用
    只要引用存在,垃圾回收器永远不会回收

    如 obj.equels(new Object()); 而这样 obj 对象对后面 new Object 的一个强
    引用,只有当 obj 这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。

    2、软引用 非必须引用,内存溢出之前进行回收,可以通过以下代码实现

    Object obj = new Object(); 
    SoftReference<Object> sf = new SoftReference<Object>(obj); 
    obj = null; 
    sf.get();//有时候会返回null

    3、弱引用 第二次垃圾回收时回收,可以通过如下代码实现

    Object obj = new Object();
    WeakReference<Object> wf = new WeakReference<Object>(obj); obj = null; 
    wf.get();//有时候会返回null 
    wf.isEnQueued();//返回是否被垃圾回收器标记为即将回收的垃圾
    弱引用是在第二次垃圾回收时回收,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null。弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的
    isEnQueued 方法返回对象是否被垃圾回收器标记。
     
     

    4、虚引用 垃圾回收时回收,无法通过引用取到对象值,可以通过如下代码实现

    Object obj = new Object(); 
    PhantomReference<Object> pf = new PhantomReference<Object>(obj); 
    obj=null; 
    pf.get();//永远返回null 
    pf.isEnQueued();//返回是否从内存中已经删除
    虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。虚引用主要用于检测对象是否已经从内存中删除。
  • 相关阅读:
    053532
    053531
    053530
    053529
    053528
    RTSP和RTMP的区别是什么?
    RTSP、RTMP和HTTP协议的区别
    在C#中实现视频播放器
    wpf下基于opencv实现视频播放器
    C#实现视频播放器(Vlc.DotNet)
  • 原文地址:https://www.cnblogs.com/yrjns/p/12571076.html
Copyright © 2011-2022 走看看