JAVA 引用

JAVA中的引用分为强引用,软引用,弱引用,虚引用

强引用

强引用是默认引用,当我们创建一个对象并赋给一个变量,就创建了一个强引用,当没有变量再引用这个对象,下次垃圾回收时对象就会被回收。

public static void normal() {
    Integer i = new Integer(1);
    System.out.println(i); // 1

    i = null; // 之前被引用的对象将在下一次垃圾回收时被回收
}

SoftReference

软引用,当一对象被软引用,那么对象将被JVM尽可能的持有,直到JVM内存不足时才会被回收,适合实现缓存。

public static void soft(){
        Integer i = new Integer(1);
        System.out.println(i); // 1

        SoftReference sr = new SoftReference(i);
        System.out.println(sr.get()); // 1

        i = null;

        System.out.println(sr.get()); // 1

        System.gc();

        System.out.println(sr.get()); // 1
}

执行垃圾回收后,软引用仍然能够取得对象。

WeakReference

弱引用,当一个对象被弱引用,那么对象可能被GC回收也可能没有被回收,具体要通过Reference.get()来判断其返回值是否为空。
弱引用就像一个被强引用的对象,变成没有变量再引用时的状态,将被GC回收。

public static void weak(){
        Integer i = new Integer(1);
        System.out.println(i); // 1

        WeakReference wr = new WeakReference(i);
        System.out.println(wr.get()); // 1

        i = null;

        System.out.println(wr.get()); // 1

        System.gc();

        System.out.println(wr.get()); // null
}

PhantomReference

虚引用,通过Reference.get()总是返回null,所以被虚引用的对象无法再被找回。

public static void phantom(){
    Integer i = new Integer(1);
    System.out.println(i); // 1

    ReferenceQueue<Object> refQueue = new ReferenceQueue<>();
    PhantomReference pr = new PhantomReference(i, refQueue);

    Reference<?> poll = refQueue.poll();
    System.out.println(poll); // null

    System.out.println(pr.get()); // null
    i = null;
    System.out.println(pr.get()); // null
}

https://stackoverflow.com/questions/3329691/understanding-javas-reference-classes-softreference-weakreference-and-phanto
https://www.reddit.com/r/learnjava/comments/3r104u/softreference_vs_weakreference_vs/
http://javaconceptoftheday.com/types-of-references-in-java-strong-soft-weak-and-phantom/
https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakreference-in-java
https://www.logicbig.com/tutorials/core-java-tutorial/gc/soft-vs-weak-ref.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • 概述 java.lang.ref 类库包含一组类,为垃圾回收提供了更大的灵活性。 java.lang.ref 有三...
    bing__chen阅读 410评论 0 2
  • 强引用 ( Strong Reference ) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝...
    tomas家的小拨浪鼓阅读 2,797评论 1 4
  • 在堆里存放着几乎多有的java对象实例,垃圾搜集器在对堆进行回收之前,第一件事情就是确定这些对象之中哪些还“存活”...
    kylinxiang阅读 27,840评论 2 15
  • 来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details...
    会点代码的大叔阅读 340评论 0 1
  • 选择这样的一个名字是因为这几天脑子都飘着这几句歌词: 每天站在高楼上 看着地上的小蚂蚁 它们的头很大 它们的腿很细...
    疤疤阅读 816评论 0 0