(これは古い日記です)

Windows2000におけるリソース不足のような現象について。

Windows9x時代には、リソース不足、という現象があり、一日に2,3回は再起動しないといけなくなるというお粗末なものだった。WindowsNTになり、この問題は解決されたと言われているが、自宅マシン(Windows2000)では、Windows9xでのリソース不足のような現象がたびたび起こっていた。例えば、エクスプローラで新しいウィンドウを一つ開くと、メニューの部分がなくて、メニューの右側のWindowsのマークがメニューの部分までいっぱいに広がっていたり、右クリックのウィンドウが開かなくなったり、メニューが開かなくなったり、みたいな現象である。適当にウィンドウ一つ閉じたりすれば一時的には解決するが、やはり何か上限みたいなものがあるようだ。
ちなみにメモリは3G積んであって、このリソース不足的現象が起こるときでもたいてい1G弱程度しかメモリは使用していないので、メモリ不足ではない。
鬱陶しい現象だと思いつつマシンを再起動する等でごまかしていたが、ようやく原因みたいなものを知った。

原因不明のメモリ不足エラーに対処する方法(デスクトップ・アプリケーション・ヒープ不足エラーに対処する方法)
Windows2000のデスクトップアプリケーションヒープ領域(システムリソース)を増やしたい

デフォルトでヒープサイズが3Mbyteで、開けるウィンドウの数が15000程度に制限されているらしい。
タスクマネージャのパフォーマンスタブの所の、ハンドル、という所の数がそれにあたるようだ。Windowsプログラミングで出てくるHANDLEの数だと思われる。確かに、リソース不足的現象が起こっていたときには、この数が15000〜16000程度の値になっていた。
該当レジストリの値を3072→4096に変更して再起動。適当に重そうなアプリケーション起動しまくったり、エクスプローラ開きまくったり、IE開きまくったりしてハンドル数を大きくしていくと、確かに20000前辺りでリソース不足が発生。多分これが原因だったと考えていいだろう。
しかし、再起動直後でもハンドル数8000以上いってるのに、デフォルトが15000は小さすぎな気がする。スタートアップで起動するアプリが多すぎるせいなのかもしれないが。まあWindows2000も、5年前のものだし、当時のメモリ状況を鑑みれば妥当と言えば妥当なのかもしれない。

ちなみに、メモリが3Gもあるのは次のような理由から。以前から512M*2で使用していたが、たまに1Gを越えることがあった。新しいマザーにしたとき、メモリを増設しようと考えた。メモリスロットは4つ、Dual Channelなので増設するなら2枚まとめて増設する必要がある。512M*2を増設すると、2Gになるが、メモリスロットが全部埋まってしまう。ひょっとしたら今後、メモリが2Gでは足りないという状況が発生するかもしれない。すると、512M*2を抜いて、1G*2を挿さないといけない。512M*2が無駄になる。ならばいっそ、将来を見越して1G*2を増設すべきだ。
しかし、当分2G以上メモリを使用することはなさそうである。将来を見越しているなら、DDR2やDDR3のことを考えて、512M*2にしておいた方が良かった気もする。