栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中的四种引用类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中的四种引用类型

java中的引用类型

对象引用的强度比较:

强引用(Strong Reference)> 软引用(Soft Reference)> 弱引用(Weak Reference)> 虚引用(Phantom Reference)

  • Strong Reference :所谓强引用,就是我们最常见的普通对象引用,只要还有一个强引用指向对象,就表名对象还活着,立即回收器就不会去染指。对于一个普通对象,如果没有其它引用关系,只要超过了引用的作用域或者显式的将相应的强引用赋值为null,就可以被垃圾回收器进行回收了,当然具体还是要看垃圾收集策略。注意:只要强引用还存在,jvm宁愿抛出OutOfMemoryError 也不会去进行回收
  • Soft Reference :软引用就是相对强引用弱化一点的引用,只有当jvm认为内存不足时,才会试图去回收软引用指向的对象,jvm会在确保抛出OutOfMemoryError 之前清理软引用对象。软引用通常用来实现内存敏感的缓存,如果还有空闲内存,就可以暂时保留缓存,让程序更有效率的运行,当内存不足时就清理掉,这就在保证了使用缓存的同时不会因为缓存而耗尽内存。
  • Weak Reference : 弱引用仅仅是提供一种访问在弱引用的状态下对象的途径。这就可以用来构建一种没有特定约束的关系,比如维护一种非强制性的映射关系,如果试图获取时该对象还存在,就使用它,否则就重新实例化。弱引用同样也是很多缓存实现的选择。注意:一个对象只有弱引用指向它的时候,它是可以被回收的
  • Phantom Reference :虚引用也可被叫做幻像引用,就像形同虚设一样。你不能通过它访问对象。它仅仅是提供一种确保对象被finalize以后要做某些事情的机制。比如,通常用来做所谓的Post-Mortem清理机制,可以利用虚引用监控对象的创建和销毁。注意:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。

四种引用状态的比较:

引用类型被垃圾回收时间用途生存时间
强引用从来不会对象的一般状态JVM停止运行时终止
软引用当内存不足时对象缓存内存不足时终止
弱引用正常垃圾回收时对象缓存垃圾回收后终止
虚引用正常垃圾回收时跟踪对象的垃圾回收垃圾回收后终止
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号