C# grand tableau d'octets et de fuite de mémoire si pas entaché de nullité rapidement

J'ai une classe qui a un tableau d'octets holding à partir de 1 048 576 octets jusqu'à 134,217,728 octets.
Dans la dispose vide, j'ai le tableau de valeur null et la méthode de l'appel de la débarrasser des appels GC.Collect après.

Si je me débarrasser tout de suite que je vais obtenir mon mémoire, mais si j'attends comme 10 heures et d'en disposer, l'utilisation de la mémoire ne change pas.

So far So good. Et quelle est votre question?
je ne comprends pas pourquoi le temps serait la cause de la mémoire pour ne pas être libéré. et si il y a une solution à ce problème.
Lorsque la mémoire est utilisée que long, il sera promu à travers les générations de la collecte des ordures. Quand il est dans les générations suivantes, il a tendance à ne pas obtenir recueillies jusqu'à ce que le système en a besoin, ce n'est pas une fuite de soi. Avez-vous essayé le Force option sur GC.Collect et spécifier les générations à recueillir?
p.s. Je n'ai pas vraiment recommandons de forcer le GC, laissez-le GC le faire. Vous êtes maintenant sur la mémoire pendant une longue période, de sorte que le GC suppose que vous allez continuer à le faire et vérifie qu'il est beaucoup moins fréquemment. Rechercher des générations de collecte des ordures pour plus de détails.
Vous n'avez pas expliqué pourquoi c'est un problème. La mémoire n'est pas libérée immédiatement. OK, alors qui s'en soucie? Il sera libéré quand il a besoin d'être libérée. Laissez le garbage collector de faire son travail.

OriginalL'auteur jasonbay13 | 2011-11-28