java中的引用

最近打算跳槽,读了一下极客时间的java核心技术36讲,感觉还不错,就此做个笔记(感兴趣的也可以点击购买链接http://stuq.com/a/100nJ,非广告推广)。本文所有内容,摘自https://time.geekbang.org/column/82笔记,侵删

简介

强引用:只要强引用还指向一个对象,就证明对象还活着。如果一个普通的对象,如果引用设置成null,就会被垃圾收回了,但不会立即被收回。
软引用:可以让对象豁免一些垃圾收集,只有JVM内存不足的时候,才会对其进行收回。JVM会保证在OOM之前,确保已经回收了软引用指向的对象。一般用软引用来实现内存敏感的缓存。
弱引用:不能让对象进行豁免垃圾收集,应用例子就是WeakHashMap,它和HashMap几乎一样,唯一的区别就是它的键(不是值!!!)使用WeakReference引用。当WeakHashMap的键标记为垃圾的时候,这个键对应的条目就会自动被移除。当一个对象被标记位弱可达(也就是所有引用它的都是弱引用)那么就会被垃圾收集器标记为可终结(finalizable)的。软引用和弱引用的区别就是,软引用保留时间会比较长,只有当内存不多的时候才会回收软引用的对象
幻象引用:也成为虚引用,它的唯一作用就是当其指向的对象被回收之后,自己被加入到引用队列,用作记录该引用指向的对象已被销毁。

强可达:当一个对象可以有一个或者多个线程不通过各种引用访问到的情况,就是强可达。比如:新创建一个对象,那么创建这个对象的线程对它就是强可达。
软可达:只能通过软引用才能访问时的状态
弱可达:只能通过弱引用访问时的状态
幻象可达:没有强引用,软引用还有弱引用,并且经过finalize过的就是幻象可达

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

推荐阅读更多精彩内容

  • 转自CSDN文章:Java面试题集 求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪...
    流浪java阅读 833评论 0 12
  • 原文链接:译文:理解Java中的弱引用 不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们...
    lisx_阅读 173评论 0 0
  • 转自理解Java中的弱引用 不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给...
    抓兔子的猫阅读 372评论 0 2
  • Java引用的种类 1.对象在内存中的状态 对于JVM的垃圾回收机制来说,是否回收一个对象的标准在于:是否还有引用...
    Jack921阅读 3,908评论 0 3
  • 亲爱的黄文英,对不起,我没有让你拥有美丽和智慧。 亲爱的黄文英,谢谢你,谢谢你一直以来的坚持和寻求更好的你。 亲爱...
    湘小君阅读 257评论 0 0