9

私は何年にもわたって Delphi に手を出してきましたが、アプリケーションを最小化して復元するとメモリの使用量が減るのはなぜだろうかといつも疑問に思っていました。

例として、私は Delphi 7 を使用しており、何もない新しいプロジェクトを作成しますが、すべてのプロジェクトが最初から空白のフォームで始まり、F9 を押してアプリケーションを実行し、アプリのメモリ使用量を調べます。その後、アプリを最小化すると、メモリ使用量が約 760kb に下がり、最後にアプリを復元すると、メモリ使用量が約 1.5mb に戻ります。これは、最初にロードしたときの約 1/2 です。これは、何がこれを実現しているのかについて常に私を混乱させてきました。さらに重要なことは、通常使用する 3.5 MB の代わりに 1.5 MB のメモリを使用するディレクティブでアプリケーションを起動することです。

乾杯、デイブ

4

3 に答える 3

5

おそらくWindowsのメモリ管理に関するものです。Windows電卓で同じことを試してみてください。動作は同じです:))

ここに答えがあります: http://support.microsoft.com/?kbid=293215 そして何人かの人々は同じ質問をしています: http://digital.ni.com/public.nsf/allkb/9EA3D4258E037B8A8625763300434D4D

よろしくお願いします、

于 2010-07-26T11:32:54.353 に答える
4

ここでは、Ian Martins による非常に明確な説明を見つけることができます。アプリケーションがシステム コールSetProcessWorkingSetSizeプロシージャを最小化して、プロセスの非アクティブ メモリを解放する場合。

このコードをアプリケーションに追加して、同じことを行うことができます。ボタン OnClick でこれを行うことができます:

procedure LiberarMemoria;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
    SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

効果は、アプリケーションを最小化するのと似ています。アプリケーションが最終的に大きなメモリ ブロックを使用するタスクを実行する場合、この小さなコードを使用して、使用後にメモリを強制的に解放できます。

よろしく

于 2010-07-26T11:44:23.380 に答える
1

この質問に関するBarryKellyの回答を参照してください。

于 2010-07-26T14:25:42.733 に答える