什么是强引用?它的作用是什么?代码举例讲解

强引用(Strong Reference)是我们最常见的普通引用,它会无条件地使对象具有引用语义。只要强引用存在,垃圾回收器就永远不会回收所引用的对象。

强引用的作用是:

  1. 确保对象被引用,不会被垃圾回收机制回收。
  2. 当内存空间不足时,JVM也不会考虑回收被强引用关联的对象。
  3. 绝大多数情况下,我们都使用强引用,只有在特殊情况下,我们会考虑使用软引用或弱引用。

强引用是我们日常开发中使用最普遍的引用方式,可以简单理解为普通的对象引用。

来看一个简单示例:

public class StrongRefDemo {
    public static void main(String[] args) {
        Object obj1 = new Object();
        Object obj2 = obj1;   // 强引用

        obj1 = null;         

        System.gc();         

        if(obj2 != null) {   
            System.out.println("obj1未被回收"); 
        }
    }
}

执行结果为:

obj1未被回收

在该示例中:

  1. obj1作为obj2的强引用对象。
  2. 设置obj1为null,但是obj2还存在强引用。
  3. 显式调用GC,但是obj1仍然不会被回收,因为还有强引用obj2引用着它。
  4. obj2不为null,说明obj1未被回收。