Windowsカスタマイズ

DLLがメモリを救う!その仕組みを知っておこう

プログラムのサイズを抑えメモリを節約するDLL

ウィンドウズフォルダ内やアプリケーションのインストールフォルダ内には、拡張子が「.dll」のDLL(ディーエルエル)ファイルが数多く用意されている。DLLとは「DynamjcLinkLibrary」(ダイナミックリンクライブラリ)の略で、各種機能や命令が収められているパッケージファイルと考えればわかりやすいだろう。DLLファイルは必要に応じてアプリケーションの実行ファイルに呼び出され、メモリ内に読み込まれることで、その機能が利用できるようになる。ちなみに、DLLファイルを単体で利用することはできない。仮にDLLという仕組みが存在しないと、アプリケーションの実行ファイルにすべての機能を詰め込む必要が出てくる。これでは実行ファイルのサイズが大きくなるうえ、起動するたびにすべての機能をメモリに読み込まなければならない。一方、必要に応じてDLLファイルをメモリに読み込み、その機能を利用する仕組みなら、メモリを有効に使えるというわけだ。

機能を共用することでメモリの空き領域を確保

DLLファイルを使う利点は、もうひとつある。それは複数の実行ファイルでDLLファイルを共用できることである。つまり、あるアプリケーションがメモリに呼び出したDLLファイルの機能は、他のアプリケーションでも利用できるというわけだ。複数のアプリケーションに共通する機能を使うのに、ひとつのDLLファイルをメモリに読み込めば済むので、そのぶんメモリの消費を抑えられる。

アプリの終了時にメモリからDLLを解放する設定

このようにして読み込まれたDLLファイルだが、アプリケーションの終了後もこのデータがしばらくメモリ内に残っていることがある。DLLファイルはさまざまなアプリケーションで使われるため、すぐに解放されない仕組みになっているのだが、たくさんのDLLファイルがメモリに読み込まれたままでは、それこそメモリの空き領域を圧迫してしまう。そこで、アプリケーションを終了したら使っていたDLLファイルもメモリからクリアするようにカスタマイズしてみるといい。具体的にはレジストリの設定を行なうことになるわけだが、方法については【画面1】を参考にしてもらいたい。注意すべき点は、再度DLLファイルを読み込むというプロセスが発生する可能性があるということ。その際はプログラムの動作が若干ながら遅くなる場合がある。基本的に、搭載された物理メモリの容量が少ない環境のほうが、本テクニックの効果は高い。

●ウインドウズXPの環境なら、DLLファイルはウィンドウズフォルダ
(通常は「Windows」)内の「system32」フォルダなどに数多く見られる

アプリの終了時にメモリからDLLを解放する設定
【画面1】レジストリエディタを起動し、①ウィンドウでHKEYLOCAL_MACHINE→SOFTWARE→microsoft→Windows→CurrentVersion→(フォルダ)をたどって選択。その状態で<編集>メニュー→<新規>→②<キー>を選択し、作成されたキーの名前を③半角の「AlwaysUnloadDLL」にしよう。右ウィンドウで④「(既定)」(または「(標準)」)アイコンをダブルクリックし、⑤「値のデータ、欄に半角の「1」を入力。⑥<OK>ボタン→⑦ウィンドウ右上の[×]ボタンをクリックし、パソコンを再起動する。なお、設定をもとにもどすには、「(既定)」(または「(標準)」)アイコンの「値のデータ」欄に半角の「0」を入力しておけばいい

メモリ特有のトラブルが空き領域不足を引き起こす

メモリを解放できないとき領域が不足するプログラムの起動や動作が妙に遅いハードディスクの読み書きが頻繁に起こるなど、メモリが不足しているような現象に陥ったことはないだろうか。「メモリは足りているはずなのにな……」と不思議に思っているのなら、メモリリークやメモリのフラグメンテーションを疑ってみよう。メモリリークとは、アプリケーションを終了したにもかかわらず、メモリ内の使われていた傾城が解放されない現象のこと。この場合、新しくアプリケーションを起動してもこのメモリ領域は使えない。また、アプリケーションを起動したり終了したりしているうちに、利用可能なメモリの領域が分断され、まとまった領域を確保できなくなることがある。このことをメモリのフラグメンテーション(断片化)と呼ぶ。メモリ内でフラグメンテーションが発生すると、データのサイズによっては分割されて読み込まれるわけだが、これはわずかながら動作の不安定や遅延をまねくことになる。


<PR>メモリー:ネット最安はどこ!?

ノジマオンライン TSUKUMO

ワンポイントテクニック

システムファイル保護が使うキャッシュをリフレッシュ
ウインドウズXPでは、システムの運用に欠かせないシステムファイルが保護されている。システムファイルが削除されると、ウィンドウズフォルダ(XPをインストールしたフォルダは通常は「Windows」)→「SyStem32」内の「dllcache」フォルダ内にキャッシュされたファイルを使って復元処理が実行されるのだ。この機能はシステムの安定運用に非常に有効なわけだが、キャッシュファイル自身が壊れいては意味がない。「Sfc」を実行して年に一度くらいはリフレッシュしておきたい。

「ファイル名を指定して実行」の①「名前」欄に半角で「stc(半角空き)/Purgecache」と入力。②<OK>ボタンを押すとキャッシュされたシステムファイルがクリアされる。続いて③「名前」欄に半角で「sfc(半角空き)/scannow」と入力して④<OK>ボタンを押すと、⑤システムファイルのチェックが実施される。XPのセットアップCD-ROMが要求された場合は、ドライブに挿入して⑥<再試行>ボタンを押そう。これで、システムファイルが「dllcache」フォルダに再度キャッシュされる

縮小表示用のキャッシュファイルを制御

縮小表示用のキャッシュファイルを制御
フォルダ内を縮小表示したときに作成される「Thumbs.db」は、アイコンの表示データのキャッシュファイルだ。これがあると2度目の縮小表示は速くなるが、表示された画像が実際の中身とは異なる事態も起こりうる。そうしたことをふまえて、キャッシュファイルを作る・作らないの設定を「フォルダオプション」ダイアログで行なおう。「フォルダオプション」ダイアログを開き、①<表示>タブに移動する。「Thumbs.db」を作成するなら②「縮小版をキャッシュしない」をチェックオフにし、作成しないならチェックを入れる。最後に③<OK>ボタンを押す

IE6のキャッシュを削除さらに容量を見直す
IE6のキャッシュを削除さらに容量を見直す

IE6のキャッシュを削除さらに容量を見直す
インターネットエクスプローラ(IE)6がウェブページの表示用にキャッシュしたファイルを 「インターネット一時ファイル」と呼ぶ。これに関する操作・設定は次のとおりだ。「コントロールパネル」内の「インターネットオプション」アイコンをダブルクリックして「インターネットのプロパティ」を開き、①<全般>タブに移動。②<ファイルの削除>ボタンを押し、③にチェックを入れて④<OK>ボタンを押すとインターネット一時ファイルが削除される。⑤<設定>ボタンを押して開くダイアログでは、⑥に半角で「100」と入力し、インターネット一時ファイル用の領域を100MBにしておく。この程度で十分だ。終わったら⑦<OK>ボタンを押す

「インターネットのプロパティ」の⑧<詳細設定>タブで⑨「ブラウザを閉じたとき、[Temporarylnternet Files]フォルダを空にする」にチェックを入れて⑬<OK>ボタンを押すと、IE6終了時にインターネット一時ファイルが自動で削除される。セキュリティ対策の一環として設定しておくとよい

スプールフォルダを別のドライブに移動する

スプールフォルダを別のドライブに移動する
印刷を実行する際に、プリントアウトしたデータはキャッシュのような役割を果たすスプールデータとしてスプールフォルダに書き出される。このスプールフォルダを高速なドライブに移動すると、印刷速度を向上することができる。<スタート>メニュー→<設定>→<プリンタと FAX>を選択、<ファイル>メニュー→①<サーバーのプロパティ>を選んで開くダイアログの②<詳細設定>タブに移動する。③「スプールフォルダ」欄のフォルダのフルパス名(初期設定は「C:\Windows\System32\spool\PRINTERS」、「C:」は起動ドライブ)を変更すると、スプールフォルダを移動できるのだ。終わったら④<OK>ボタンを押し、確認ダイアログで<はい>ボタンをクリックする。なお、新しいスプールフォルダは自動で作成される。


用語辞典

システム・ファイル
OSなどのシステムを構成するための基本的なファイル。ユーザー・ファイルと対比させるために使用される
このページのtopへ