私のマシン (XP、64) では、ASP.net ワーカー プロセス (w3wp.exe) が常に 5.5 GB の仮想メモリを予約して起動します。これは、ホストしている Web アプリケーションに関係なく発生します (aspx の空の Web ページであっても、何でもかまいません)。
仮想メモリのこの大きな古いチャンクは、プロセスの開始時に予約されているため、これはある種の段階的なメモリ「リーク」ではありません。
windbg を使って調べてみると、メモリがプライベート、予約済み、RegionUsageIsVAD であることがわかります。これは、VirtualAlloc を呼び出す誰かの作業である可能性があることを示しています。また、問題のメモリが、それぞれ 1GB の 4 つの大きなチャンクといくつかの小さなチャンク (それぞれ 1/4GB) で割り当て/予約されていることも示しています。
したがって、誰が VirtualAlloc を呼び出して、このすべてのメモリを予約しているのかを突き止める必要があると思います。それ、どうやったら出来るの?
w3wp.exe は svchost.exe (つまり、IIS/ASP.Net フィルター) によって起動されるプロセスであり、デバッグするために自分で起動しようとすると、メモリ割り当ての前にデバッガーをプロセスに接続するのは難しいです。この大量のメモリ予約なしで終了するだけです。また、コマンド ライン パラメータを再利用すると無効になります (呼び出しプロセスによって作成されたパイプであるため、これは理にかなっています)。
事後にwindbgをプロセスにアタッチできます(これが問題のメモリ領域を見つけた方法です)が、その時点で誰が何を割り当てたかを判断できるかどうかはわかりません。