jvm-03垃圾回收-引用

1.什么是引用

如果一个Reference类型的数据里面装的是另外一块内存的起始地址,就说这块内存代表着一个引用。
这种定义纯粹但是比较狭隘。在这个定义下,对象只有被引用和没有被引用 两种状态,没有中间状态。

为了保证高效实用jvm内存(达到当内存空间足够的时候,对象不会被回收。当内存空间不足的时候,我们可以抛弃部分引用) jdk1.2后引进了强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference),虚引用(Phantom Reference)。

2.jdk中的引用类型

  • 强引用: 类似于Object b = new Object()这类引用,只要强引用存在,垃圾收集器永远不会回收被引用的对象。
  • 软引用: 用于描述一些有用,但是非必需的对象。对应软引用关联的对象。在系统将要发生内存溢出的时候,会把这些对象列入可回收的范围内 并且进行第二次回收。如果这次内存回收还是没有足够内存,才会抛出内存溢出异常。
  • 弱引用: 用于描述一些有用,但是非必需的对象。但是强度比软引用更加弱。弱引用的对象只会存活到下一次gc之前。
  • 虚引用:如果一个对象与GC Roots之间仅存在虚引用,则称这个对象为虚可达(phantom reachable)对象。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容