- java中的引用类型(reference)中存储的数值代表另外一块内存的起始地址,称这块内存代表着一个引用
- 在JDK1.2之后,Java对引用的概念进行了扩展,将引用分为 强引用(Strong Referencere)、软引用(soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference),强度依次减弱
引用的具体分析
- 强引用(Strong Reference):在Java程序中是普遍存在的,我们经常在创建对象的时候使用的Object a = new Object();就属于强引用。只要引用还在(GC Roots引用链可达),垃圾收集器永远不会回收被引用的对象,所以不会回收强引用对象来解决内存不足的问题
- 软引用(Soft Reference):用来描述一些还有用但是并非必须的对象。对于软引用关联的对象,在系统将要发生内存溢出之前,会把这些对象列入回收范围之中进行第二次回收,如果这次回收还没有足够的内存,那么将会抛出内存溢出异常。软引用可用来实现内存敏感的高速缓存
- 弱引用(Weak Reference):用来描述非必须的对象,但是她的强度比软引用还要弱,被弱引用关联的对象,只能生存到下一次垃圾收集之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉纸杯弱引用关联的对象
- 虚引用(Phantom Reference):也成为幽灵引用,或者幻影引用,是最弱的一种引用关系,一个对象是否有虚引用的存在,完全不会对其生存时间构成引用,也无法通过一个徐引用来获取一个对象实例。此引用的唯一目的就是能在这个对象被回收时,收到一个系统通知。
参考
周志明《深入理解Java虚拟机》
https://www.cnblogs.com/baizhanshi/p/6272584.html
写在最后
做一个灵魂和肉体分离的人,灵魂不受肉体的束缚,灵魂可以指挥肉体
网友评论