Avatar ·

ما الفرق بين SoftReference و WeakReference في Java؟

مرحبًا أيها الزملاء! أنا مطور Java مبتدئ ولا أستطيع فهم أنواع المراجع في Java. أعلم أن هناك Strong Reference (مرجع عادي)، بالإضافة إلى SoftReference و WeakReference. عمليًا، أفهم أن SoftReference يُستخدم للتخزين المؤقت (caching)، و 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.get()); } } ```