メモリ・リソース

user-pic
0

Windows 10の運用の続きであるが、Windows 10のメモリ・リソース管理について、ちょっと思いついたことがあるので、メモしておく。

まず、Windows 10に限らず、オペレーティングシステム全般にそうだと思うが、アプリケーションを起動したり閉じたりを繰り返すと、メモリ・リークなどのためにより、次第に使えるメモリ・リソースが減ってきて、使えるメモリ・リソースがある閾値以下になると、アプリケーションが起動できなくなる、プリンタ・ドライバなどのデバイス・ドライバが見えなくなる、ネットワークとの通信ができなくなる、などのよく分からない障害が発生する。人間でもコンピュータでも、リソース不足は、一見原因不明の障害をもたらすのである。

一方、何がメモリ・リソースをよく消耗するかというと、私の見るところ、AbemaTVなどのネットワーク・ストリーム系のウェブ・システムあたりそうだったりする。他には、シンプルながらエラトステネスの篩のようなプログラムもそうだったりする。すなわち、それはa_num = new int[AR];によってメモリをアロケートするのだが、実はこの場合、125MBものメモリをアロケートすることになる。もちろんプログラムを終了するときはdelete[] a_num; で礼儀正しくメモリを解放するのだが、なぜか開放されきらなかったりする。

それで当然に私にも対策はある。それは、Windows 10付属のリソース・モニタで利用可能なメモリの残量を確認する。ところが、どうみてもリソース不足のはずなのに、リソース・モニタに反映されていなかったりすることがある。それで私は、リソース・モニタは参考にしつつ、それはあくまでも参考として、勘によりどうもリソースがまずそうだと想定したら、システムを再起動している。

ところが、システムを再起動して不思議なことが起きたりする。それは、リソース・モニタでみると、システムが使用しているメモリがかなり増えていたりする。あるときは、システムが2747MBも使用していた。スタンバイが756MB、空きが458MBである。再起動直後で、何も明示的にアプリケーションを起動していないのに、である。明示的に、というのはバックグラウンドでいろいろアプリケーションが走っているからである。

ともかく、その状態でEmbacadero C++ Builder XE4でコンパイルさせてみると、案の定、LME288エラーが起きた。

そこでさらに再起動させると、今度はシステムが使用するメモリが2202MBに減って、スタンバイが1416MB、空きが326MBとなった。この状態では、LME288エラーが起きなくて、万歳である。

それにしても、再起動した直後は普通、常に同じ状態のはずなのに、なぜメモリの状態が毎回異なるのだろうか。もしかして、リソース消耗が激しい状態では仮想記憶システムがディスクにスワップ領域を確保して、それは一度再起動しただけでは開放されないのだろうか、とかいろいろ考えてみるのだが、インサイドWindows 10のような事情に全く疎く、なにひとつ分からないのであった。

トラックバック(0)

トラックバックURL: http://commutative.world.coocan.jp/mt/mt-tb.cgi/4888

コメントする

月別 アーカイブ

このブログ記事について

このページは、あやたろうが2018年4月28日 05:25に書いたブログ記事です。

ひとつ前のブログ記事は「ソラリス」です。

次のブログ記事は「崖っぷち」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。