Avatar ·

Java中SoftReference和WeakReference的区别是什么?

大家好!我是一名初学Java的开发者,一直搞不清楚Java中的引用类型。我知道有Strong Reference(普通引用),还有SoftReference和WeakReference。在实践中,我明白SoftReference用于缓存,WeakReference用于WeakHashMap或防止内存泄漏,但我不清楚它们之间的界限。 假设我有这样一段代码: ```java import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; public class ReferenceTest { public static void main(String[] args) { Object strongObj = new Object(); SoftReference softRef = new SoftReference<>(strongObj); WeakReference weakRef = new WeakReference<>(strongObj); strongObj = null; // 现在strongObj可以被GC回收 System.gc(); // 请求GC工作 System.out.println("Soft: " + softRef.get()); System.out.println("Weak: " + weakRef