01Java中的强引用,软引用,弱引用,虚引用有什么用
强引用(StrongReference):Objectobj=newObject();抛出OutOfMemoryError终止程序也不会回收具有强引用的对象;通过将对象设置为null来弱化引用,使其被回收。软引用(SoftReference):Stringstr=newString("ABC");//强引用SoftReferencesoftRef=newSoftReference(str);对象处在有用但是非必须的状态,只有当内存空间不足时,GC才会回收该对象的内存,可以实现高速缓存。弱引用(WeakReference):Stringstr=newString("ABC");//强引用WeakReferencesoftRef=newWeakReference(str);非必须的对象,比软引用更弱一些;GC时会被回收;回收的概率也不大,因为GC线程优先级比较低;适用于引用偶尔被使用且不影响垃圾收集的对象。虚引用(PhantomReference):Stringstr=newString("ABC");//强引用ReferenceQueuequeue=newReferenceQueue<>();PhantomReferenceref=newPhantomReference<>(str,queue);不会决定对象的生命周期;任何时候都可能被垃圾收集器回收;跟踪对象被垃圾收集器回收的活动,起哨兵作用;必须和引用队列ReferenceQueue联合使用.
来自:jvm虚拟机相关-垃圾回收算法