对象引用(强,软,弱,虚)

        在JDK1.2之前,一个对象只有两种状态"已被引用"和"未被引用" ,在JDK1.2后,为了使得程序能够更好的控制对象的生命周期,引入了对象特殊状态的四种引用,由强到弱分别是:强引用,软引用,弱引用,虚引用。

1.强引用

        在Java程序中,最常见的就是强引用,也是默认的引用类型,比如:Object object = new Object(),只要强引用的对象是可达的,JVM宁愿报OOM,也不会回收强引用,如果想要回收强引用,那么就将引用变量赋值为null,再合适的情况下垃圾回收就会收集,所以强引用也是造成内存泄露的主要原因

2.软引用

        软引用对应的实现类是SoftReference,我们可以将一个对象作为参数来创建SoftReference对象,这样这个对象就是软引用对象了,如果垃圾回收一次之后发现内存依然不够,才会回收软引用

3.弱引用

        弱引用对应的实现类是WeakReference,当垃圾回收器扫描到弱引用时,无论此时的内存空间是否足够,都会回收弱引用

4.虚引用

        虚引用对应的实现类是PhantomReference,虚引用就和没有任何引用一样,在任何时候都可能被垃圾回收,虚引用必须和引用队列一起使用,主要用来跟踪对象被垃圾回收的活动

你可能感兴趣的:(并发编程,jvm,java,开发语言)