Windowsはウィンドウの最小化でプロセスのワーキングセットを縮小しようとする

以前のエントリid:NyaRuRuさんからえらく詳しい解説コメントをいただいた。
詳しい話はThe working set of an application is trimmed when its top-level window is minimizedにあるのだが、要するにデフォルトのWindow Procedudeではウィンドウの最小化のタイミングでプロセスのワーキングセットを小さくしようとするので、普通に作ったアプリケーションでは最小化でメモリがスワップアウトすると*1。もちろん、アプリケーション作者がWindow Prucedueで最小化イベントを捕まえて自前でShowWindowを呼び出せばワーキングセットのサイズ変更を抑制できる。
で、昔はでかいアプリケーションといってもワーキングセットはせいぜい数十MBだったから気にならなかったけど、最近ではEclipseFirefoxなどワーキングセットが100MB以上にもなるようなのが増えてきたので、この挙動によりパフォーマンスが劣化すると。そういやWebSphere Studioなんかはメモリが1GBあっても動作がもっさりして使い物にならないなんていっている人もいたけど、こういうのも関係しているのかな。
あと、この辺のメモリ管理の挙動はVistaで結構改善されるとのことなので、100MBオーダのアプリケーションを使っている人はVistaに移行することでハッピーになれるかも。

*1:正確にはスタンバイリストに入るだけで、すぐにスワップアウトされるわけではないらしい