GC(2)、再谈引用

一、概述
上文提到了两种基础算法,但是不管你是哪种算法都离不开两个字:引用

二、引用的概念
JDK1.2以前,对引用的定义很传统:
如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就成这块内存代表着一个引用。

三、新版本引用的概念
在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)四种。这四种强度从高到低。

1、强引用
无处不在。类似Object obj = new Object();这样的引用都是强引用,垃圾收集器永远不会回收掉被强引用正在引用着的对象。

2、软引用
描述一些还有用,但并非必须的对象。在堆内存即将满了之前(系统即将发生OOM的之前),将会把这些对象列进回收范围之中进行二次回收,假设这次回收还没有足够的内存,那只好抛出OOM了。

3、弱引用
也是描述一些还有用,但并非必须的对象。但是比软引用更弱一些。被弱引用关联的对象只能活到下一次垃圾收集发生之前,第二次垃圾回收一定会将弱引用的对象回收掉,不管内存是否富裕。

4、虚引用
也称幽灵引用或幻影引用。他是最弱的一种引用关系。此引用完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象的实例,为了衣蛾对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。(来自【深入理解Java虚拟机】的解释)

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 89,939评论 17 311
  • Java GarbageCollection(GC) Java不能像C/C++那样直接对内存进行操作(内存分配和垃...
    狮_子歌歌阅读 2,434评论 0 3
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,185评论 0 16
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,030评论 2 31
  • 1.附件一以免忘记添加。 2.标题一标题要简介明了。 3.正文一分小段,每段开头总结这段的意思,重点加粗即可。段与...
    Lili_揪揪阅读 445评论 0 0