J'ai créé une application c# qui utilise 150mb de mémoire (private bytes), principalement à cause d'un gros dictionnaire :
Dictionary<string, int> Txns = new Dictionary<string, int>();
Je me demandais comment libérer cette mémoire. J'ai essayé ceci :
Txns = null;
GC.Collect();
Mais cela ne semble pas avoir d'incidence sur mes octets privés, qui passent de 155 à 145 mégaoctets. Des indices ?
Gracias
-édition-
D'accord, j'ai plus de chance avec ce code (il réduit le nombre d'octets privés à 50mb), mais pourquoi ?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
-édition-
D'accord pour tous ceux qui disent "n'utilisez pas GC.collect", c'est juste (je ne vais pas en débattre, sauf pour dire que vous pouvez voir mon expérience en C), mais cela ne répond pas vraiment à ma question : Pourquoi le garbage collector ne libère-t-il la mémoire que si j'efface d'abord la liste des transactions ? Ne devrait-il pas libérer la mémoire de toute façon, puisque le dictionnaire a été déréférencé ?