メモリ・リーク

user-pic
0

メモリ・リークというのは、最近歳とって記憶力が低下し、最近あったこともすぐに忘れてしまう、という意味ではない。あるいはそういう意味もあるのかもしれないが、ここではコンピュータ用語として使っている。

私はもう何十年も前から、MS-DOSやWindowsの環境で、トイ・プログラムを書いてきた。すると、場合によりどうしても主記憶に所望の領域を確保し、いらなくなると解放する、という手続きが必要になる。

例えば、C言語だと、malloc()という関数を使う。malloc(512);のように呼び出すと、512バイトの領域が主記憶に確保されて、voidのポインタが返されるので、例えば、char *p;と宣言しておいて、p = (char *)malloc(512);のようにキャストして代入する。そして、作業が終わって確保した領域が要らなくなると、free(p);で解放する。

これだけみると単純な話だが、MS-DOSや初期のWindowsには重大なバグがあった。それは、malloc()でメモリ領域を確保するのはいいが、その後free()してもメモリが解放されないのである。

これがいかに致命的な欠陥か、少し考えたらわかる。すなわち、街のサラ金があって、気前よくお金を貸すのだが、その後貸したお金を一切回収できない。しかも、サラ金の資金は潤沢でない。なのでサラ金はあっという間に焦げ付く。

MS-DOSのあと、Windows 95、Windows 98になっても所詮カーネルの一部はMS-DOSを共有しているので、このバグは全く解消されていなかった。すると、アプリケーションを立ち上げて終わるということを繰り返す度にどんどん利用可能な主記憶の領域が減っていき、システムはついにハングする。

私は、純正32ビットOSのWindows NTだと、流石にこれが解消されていると期待した。なぜなら、建前上、Windows NTは、デービット・カトラーのチームが、スクラッチから書上げてきたことになっているからである。MS-DOSの悪しきレガシーはもはや存在しないはず。

じつは私はWindows NTそのものは使ったことがなく、使い始めたのはその後継であるWindows 2000からである。そこでWindows 2000ではメモリ・リークのバグが直っていることを期待した。ところがWindows 2000でも、アプリケーションを沢山立ち上げたり、終わったりすることを繰り返すと、やはりシステムの動作が不安定になってしまう。それで、ううんやはり、メモリ・リークのバグは直っていないのかと落胆した。たしかに以前よりハングしにくくはなっているのだが、それは一つには搭載されているメモリが増えたせいだと思う。

その後、LinuxというオープンソースのOSが登場したが、万事晩生の私はとうとうLinuxを使う機会をもたないでいる。ただLinuxそのものは使ったことがないが、自宅にあるHumaxというケーブルテレビのセットトップボックスは、Linuxが使われているらしい。

そのHumaxのSTBで最近、リモコンのボタンを押しても急にチャンネルが正しく選択できなくなった。なぜか、BSのチャンネルだけはちゃんと選べる。で、困って、J-COMにサポートの電話をしてみたら、混んでいるようでずっと待たされる。20分たっても、順番にお繋ぎしています、というアナウンスが出るだけである。そこで焦れて電話サポートを諦め、J-COMのサポートサイトをブラウザでみてみた。するとどうやら、STBをリセットすればよいらしい。ガイドによると前面パネルに蓋があり、そこを開けるとリセットボタンがあった。それを押すと、一分くらいかかったが、リセットされてチャンネルの選択が正しく行われるようになった。それで、これも結局はLinuxのメモリ・リークなのかとつい考えてしまった。恥ずかしいことに私は、メモリ・リーク以外に、OSが経時的に不安定になる要因を思いつかない。まあメモリ・リークだとしても、少なくとも数ヶ月の間、リセットというかリブートしないで動作できるのだから、LinuxはWindowsよりはるかに堅牢ということになる。

考えてみたら、メモリ・リークが全くないOSなんてありえるんだろうか。そういえば、会社で使っている富士ゼロックスだったかのコピー機は、一日に一度自動的にシステムをリセットしているのだった。

トラックバック(0)

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

コメント(2)

| コメントする

>たしかに以前よりハングしにくくはなっているのだが、それは一つには搭載されているメモリが増えたせいだと思う。
PC、携帯、Broad band rooter, Set top box等どれも連続使用(それも変わったことはしていない)で問題が出るのは十中八九これですね。いまだにメモリーリーク検出ツールが出回っているというのがその証拠です。会社のプリンタはUnix系ですが一定期間に再起動しないと使えなくなります。どうにかしてほしいものです。

user-pic

ISSEIさん

> PC、携帯、Broad band rooter, Set top box等どれも連続使用(それも変わったことはしていない)で問題が出るのは十中八九これですね。いまだにメモリーリーク検出ツールが出回っているというのがその証拠です。

なんと、そうなんですか。Windowsだけが馬鹿なんじゃないのですね。

コメントする

このブログ記事について

このページは、あやたろうが2017年1月13日 05:09に書いたブログ記事です。

ひとつ前のブログ記事は「グッド・バイ」です。

次のブログ記事は「エリート作家」です。

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