美文网首页
java中的四种引用(强,弱,软,虚)

java中的四种引用(强,弱,软,虚)

作者: 阳光的nick_lxz | 来源:发表于2019-01-08 17:01 被阅读0次
  • 强引用
  • 软引用(SoftReference)
  • 弱引用(WeakReference)
  • 虚引用(PhantomReference)

强引用

当内存不足时,jvm宁可抛出OutOfMemory错误,也不会回收内存

    /**
     * 强引用
     */
    public void fun1() {
//        Object object = new Object();
//        Object[] objArr = new Object[1000];
        Object object = new Object();//强引用
        Object ref = object;//引用传递
        System.out.println(object);
        boolean equals = object.equals(new Object()); //可直接通过obj取得对应的对象
        System.out.println(equals);
        object = null;//断开引用与对象的链接
        System.gc();
        System.out.println(object);
        System.out.println(ref);
    }

软引用

GC的时候,一旦发现软引用的对象,如果此时jvm内存足够,则不会回收该对象,反之,回收。

    /**
     * 软引用
     */
    public void fun2(){
        Object object = new Object();
        SoftReference<Object> reference = new SoftReference<Object>(object);
        object = null;
        System.out.println(reference.get());
        System.gc();//对比弱引用
        System.out.println(reference.get());//非Null

    }

弱引用

GC的时候,一旦发现弱引用,无论当前内存是否足够,都会回收该对象。

    /**
     * 弱引用
     */
    public void  fun3(){
        Object object = new Object();
        WeakReference<Object> reference = new WeakReference<Object>(object);
        object = null;
        System.out.println(reference.get());//结果:java.lang.Object@610455d6
        System.gc();
        System.out.println(reference.get());//结果:null
    }

虚引用

虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

   /**
     * 虚引用
     */
    public void fun4(){
        ReferenceQueue<String> queue = new ReferenceQueue<>();

        String string = new String("hello");

        PhantomReference<String> reference = new PhantomReference<String>(string,queue);

        System.out.println(reference.get());//结果 null

    }

引用强度排序

强应用>软引用>弱引用>虚引用

相关文章

  • JAVA四种引用(强引用,弱引用,软引用,虚引用)

    JAVA四种引用(强引用,弱引用,软引用,虚引用) [toc] 参考:Java 的强引用、弱引用、软引用、虚引用四...

  • java四种引用类型

    java中得四种引用 Java中有四种引用类型:强引用、软引用、弱引用、虚引用 强引用我们代码中常写,如: Obj...

  • 强、软、弱、虚引用的区别和使用

    原文阅读:强、软、弱、虚引用的区别和使用 Java提供了四种级别的应用类型:强引用、软引用、弱引用及虚引用。那么这...

  • Android面试Java基础篇(四)

    问:Java中四种引用类型 答:四种引用类型分别为 强引用、弱引用、软引用、虚引用 强引用(StrongRefer...

  • Java的四种对象引用类型

    Java的四种对象引用类型:强引用、弱引用、软引用、虚引用。 强引用(StrongReference): 强引用是...

  • Java中的四种引用类型

    一、Java中的四种引用类型 JDK 1.2 开始 Java 提供了四种引用类型,分别是强引用、软引用、弱引用、虚...

  • 深入理解Java弱引用

    Java中的引用类型 Java中存在四种引用,它们由强到弱依次是:强引用、软引用、弱引用、虚引用。下面我们简单介绍...

  • Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用。包括:强引用,软引用,弱引用,虚引用。这...

  • JAVA 基础 之 引用类型

    Java中的引用类型包含四种:强,软,弱,虚 强引用 强引用就是我们平时使用的最多的引用类型,比如:Object ...

  • Java 四种引用类型

    Java中四种引用包括:强引用,软引用,弱引用,虚引用。 强引用: 只要引用存在,垃圾回收器永远不会回收 //可直...

网友评论

      本文标题:java中的四种引用(强,弱,软,虚)

      本文链接:https://www.haomeiwen.com/subject/lysvrqtx.html