Java对象的引用方式

系统对对象的引用方式

1. 强引用(StrongReference)

这是java最常见的引用方式。

程序创建一个对象,并把这个对象赋给一个引用变量,程序通过该引用变量来操作实际的对象。

String str = new String("Hello World");//强引用

2. 软引用(SoftReference)

当一个对象只有软引用时,它有可能被垃圾回收机制回收(系统内存足够时,不会被回收;系统内存不足时,可能会被回收)

String str = new String("Hello World");//强引用
SoftReference softR = new SoftReference(str);//软引用

3. 弱引用(WeakReference)

对于只有弱引用的一个对象,当垃圾回收机制运行时,不管系统内存是否足够,总会回收该对象所占用的内存

String str = new String("Hello World");//强引用
WeakReference weakR = new WeakReference(str);//弱引用

4. 虚引用(PhantomReference)

虚引用完全类似没有引用。虚引用对对象本身没有太大影响,对象甚至感觉不到虚引用的存在。

虚引用主要用于跟踪对象被垃圾回收的状态,虚引用不能单独使用,它必须和引用队列(ReferenceQueue)联合使用。

ReferenceQueue

用于保存被回收后对象的引用。

当联合使用软引用,弱引用和引用队列时,系统在回收被引用的对象之后,将把被回收对象的引用添加到关联的引用队列中。

与软引用,弱引用不同的是,虚引用在对象被回收之前,将把它对应的虚引用添加到它关联的引用队列中,这使得可以在对象被回收之前采取行动。

你可能感兴趣的:(Java对象的引用方式)