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 ...
couv_RI4CAPOO.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Fonctions locales
Suivant
Les objets "dynamics"