强引用(Strong Reference)是我们最常见的普通引用,它会无条件地使对象具有引用语义。只要强引用存在,垃圾回收器就永远不会回收所引用的对象。
强引用的作用是:
- 确保对象被引用,不会被垃圾回收机制回收。
- 当内存空间不足时,JVM也不会考虑回收被强引用关联的对象。
- 绝大多数情况下,我们都使用强引用,只有在特殊情况下,我们会考虑使用软引用或弱引用。
强引用是我们日常开发中使用最普遍的引用方式,可以简单理解为普通的对象引用。
来看一个简单示例:
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未被回收
在该示例中:
- obj1作为obj2的强引用对象。
- 设置obj1为null,但是obj2还存在强引用。
- 显式调用GC,但是obj1仍然不会被回收,因为还有强引用obj2引用着它。
- obj2不为null,说明obj1未被回收。