Les objets "gourmands" en références faibles
Un objet utilisé une première fois puis conservé pour d’éventuelles consultations de l’utilisateur peut monopoliser beaucoup de place en mémoire. Par défaut, la référence à l’objet est forte, et tant que cette référence existe, l’objet ne pourra pas être effacé par le garbage collector. Le concept avancé des références faibles est de déclarer l’objet gourmand comme pouvant tout de même être déchargé en cas de manque de mémoire.
Voici un exemple de code autodocumenté qui présente l’utilisation de la classe WeakReference. WeakReference
// Main
Console.WriteLine("PremiereUtilisation");
var wr = PremiereUtilisation();
// Suite des traitements
//(...)
Console.WriteLine("AutreUtilisation");
AutreUtilisation(wr);
// Besoin en mémoires : le GC doit nettoyer
// les références plus utilisées (ou faibles)
GC.Collect();
Thread.Sleep(1000);
// Mais le programme a encore besoin
Console.WriteLine("AutreUtilisation après GC");
AutreUtilisation(wr);
//
static WeakReference PremiereUtilisation()
{
ClasseGourmande cg = new ClasseGourmande();
// Utilisation de ClasseGourmande ...