Avatar ·

Quelle est la différence entre SoftReference et WeakReference en Java ?

Bonjour, collègues ! Je suis un développeur Java débutant et je n'arrive pas à comprendre les types de références en Java. Je sais qu'il y a Strong Reference (référence normale), ainsi que SoftReference et WeakReference. En pratique, je comprends que SoftReference est utilisée pour le caching, et WeakReference pour WeakHashMap ou pour éviter les fuites mémoire, mais la limite entre elles n'est pas claire pour moi. Supposons que j'ai ce code : ```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; // maintenant strongObj peut être collecté par GC System.gc(); // demandons à GC de travailler System.out.println("Soft: " + softRef.get()); System.out.println("Weak: " + weakRef