複雑です。
私の最近の仮想メモリに関する記事を読むことから始めます。
http://blogs.msdn.com/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx
OK、今あなたは仮想メモリがどのように動作するかをある程度理解を持っていることを、あなたは、オペレーティングシステムがメモリにDLLをロードする方法を理解することができます。 Foo.DLLの特定のページが必要な2つのプロセスがあるとします。オペレーティングシステムは、そのページを物理のメモリにロードし、その物理ページを両方のプロセスの仮想空間にマップします。したがって、使用されている物理メモリの量は、例えば、4KBのページです。しかし、その4KBは両方のプロセスに現れます。 30MBのほとんどが物理メモリを共有している可能性があります。
あなたのタスクマネージャの使用について、より洗練された方法を見つけることができます。そこにいくつかの列を追加して、 "Working Set"と "Private Working Set"の両方を見たいとします。 「ワーキングセット」は、そのプロセスによって現在使用されている非公開かつ共有されているページの総数です。 「プライベートワーキングセット」は、共有されていないものの数です。
メモリの使用量を減らすには - まず、気になる理由を理解してください。今日のマシンはたくさんのメモリを持ち、30MBは比較的小さなメモリです。あなたがこれに取り組むための魅力的な顧客中心の理由を見つけ出すことができない限り、あなたのプログラムをより速くするか、より多くの機能を追加するなど、何か他のものに取り組んでください。あなたが気にする理由があると仮定して、自分自身にいくつかのツール、特にメモリプロファイラを手に入れましょう。 .NETメモリプロファイラは、すべての割り当てがどこにあるのか、どれくらいの大きさであるのかを示すことができます。
静的または動的にリンクされていますか? –