使用软(弱)引用可以使得内存吃紧jvm进行garbage collection的时候回收掉 只 被软(弱)引用指向的对象,避免oom内存溢出.
使用如下:
WeakReference<Object> weakRef = WeakReference<Object>(new Object());
问题来了.
如果之后还有这么一句:
Object ref = weakRef;
那么,这个对象算不算是 只 被WeakReference引用?在ref 不被 改变指向的情况下,这个对象会不会被回收?
WeakReference是弱引用,SoftReference是软引用
ref是强引用,指向了weakRef,weakRef对象是强可达的,weakRef指向的对象无法通过强引用和软引用reach,所以还是弱可达的,会被回收。
测试代码,wr在i=1时即被回收了