トップへ(mam-mam.net/)

メモリクリーナーを作成する ~Delphiでお手軽プログラミング

検索:

メモリクリーナーを作成する ~Delphiでお手軽プログラミング

メモリクリーナーって?

その昔、Windows95やWindows98の時代には必須だったメモリクリーナーを作成してみます。
原理は簡単で、多くのメモリを確保しすぐに開放します。そうするとOS上で消費されているけれど、 あまり使われていないメモリ領域がスワップ領域(ハードディスク等)に退避し物理メモリが空くという原理だと思います。(想像です)
今のパソコンは多くのメモリが搭載されているのであまり利用されることは無くなっていますが。

(1)Delphiを起動して新規プロジェクトを作成する

ファイル⇒新規作成⇒VCLフォームアプリケーションをクリックします。

(2)ボタンを配置する

右の下にあるツールパレットの「Standard」グループ内にある「TButton」をフォームへドラッグ&ドロップします。
そうするとButton1が作成されます。
(ツールパレットで検索ボックスに「button」と入力すると候補が出てくるので便利です)

(3)Button1をダブルクリックする

Button1をダブルクリックします。ボタンをクリックしたときのプログラムを記述する準備ができました。

(4)プログラムを記述する

以下プログラムを記述します。
procedure TForm1.Button1Click(Sender: TObject);
var p:pointer;
    size:integer;
begin
  //1Gバイトのメモリサイズを計算する
  size:=1024*1024*1024;

  //メモリを確保する
  GetMem(p,size);

  //確保したメモリをすべてゼロに初期化する
  ZeroMemory(p,size);

  //1秒(1000ミリ秒)待つ
  sleep(1000);

  //確保したメモリを開放する
  FreeMem(p);
end;

(5)実行する

実行ボタンをクリックして実行します。

(6)ボタンをクリックする

Button1をクリックします。

何も起こっていないように見えますが、タスク マネージャーを起動しながらボタンをクリックすると、 ちゃんとメモリを消費して解放しているのがわかります。


本物のメモリクリーナーは、パソコンの物理メモリを確認してその何パーセントかのメモリを確保してから開放する、 タスクトレイアイコンに常駐する等を行っていると思います。
また、今般はタスク マネージャーからわかりやすくするために、
speep(1000);
で1000ミリ秒待っていますが本来は不要な行です。
(Delphiは実行速度が本当に速いので一瞬で1GB確保して全部ゼロで初期化して解放してしまいます。)