系统对对象的引用方式
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
用于保存被回收后对象的引用。
当联合使用软引用,弱引用和引用队列时,系统在回收被引用的对象之后,将把被回收对象的引用添加到关联的引用队列中。
与软引用,弱引用不同的是,虚引用在对象被回收之前,将把它对应的虚引用添加到它关联的引用队列中,这使得可以在对象被回收之前采取行动。
网友评论