C'est compliqué.
Commencez par lire mon article récent sur la mémoire virtuelle.
http://blogs.msdn.com/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx
OK, maintenant que vous avez une certaine compréhension de la façon dont fonctionne la mémoire virtuelle, vous pouvez comprendre comment le chargement du système d'exploitation DLL en mémoire. Supposons que vous avez deux processus qui ont tous deux besoin d'une page particulière de Foo.DLL. Le système d'exploitation va charger cette page en physique mémoire une seule fois, puis mapper cette page physique dans l'espace virtuel des deux processus. Donc, la quantité de mémoire physique utilisée est, disons, une page de 4 Ko. Mais ce 4KB apparaît dans les deux processus. Il est probable que la plupart de vos 30 Mo est de la mémoire physique partagée.
La façon de le savoir est d'être plus sophistiqué concernant votre utilisation du gestionnaire de tâches. Vous voulez y ajouter quelques colonnes et regarder à la fois "Working Set" et "Private Working Set". "Working Set" est le nombre total de pages, privées et partagées, actuellement utilisées par ce processus. "Private Working Set" est le nombre de ceux qui ne sont pas partagés.
Pour réduire votre consommation de mémoire - eh bien, commencez par comprendre pourquoi vous vous souciez de vous. Les machines ont beaucoup de mémoire ces jours-ci et 30 Mo est une quantité relativement faible de mémoire. À moins que vous ne trouviez une raison convaincante de travailler sur ce sujet, alors travaillez sur autre chose, comme accélérer votre programme ou ajouter plus de fonctionnalités. En supposant que vous ayez une raison de vous en soucier, procurez-vous quelques outils - en particulier, des profileurs de mémoire. Le profileur de mémoire .NET peut vous dire où sont toutes vos allocations et quelle est leur taille.
Est-il lié statiquement ou dinamiquement? –