老师,下边这个打印为什么我内存够的时候obj是空呢,这个对列什么时候才往队列添加数据呢,为什么内存不足了,软引用被清掉才进来打印?这个很不懂!
private static ReferenceQueue queue = new ReferenceQueue();
private static void printQueue(String str) {
Reference<? extends User> obj =queue.poll();
if (obj !=null){
// 如果经历垃圾回收 没有打印证明,内存不够,软引用被清除掉了;
// 如果打印了,证明经历GC,但是内存足够,SoftReference没被清除
System.out.println("---------------------------------the gc Object reference =="+str+" = "+obj.get());
}
}