9


6

Delphi-最小化と復元はメモリを解放しますか?

私は何年もデルファイに手を出していましたが、なぜアプリケーションを最小化して復元するとメモリ使用量が少なくなるのか疑問に思っていました。

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

乾杯、デイブ

3 Answer


5


おそらくWindowsメモリ管理を備えたものです。 Windowsの計算機で同じことを試してみて、動作は同じです:))

ここで答え:http://support.microsoft.com/?kbid = 293215と一部の人々は同じ質問を持っています:http://digital.ni.com/public.nsf/allkb/9EA3D4258E037B8A8625763300434D4D

宜しくお願いします、


4


http://www.marteens.com/trick42.htm [ここで見つけることができます] Ian Martinsからの非常に明確な説明。 アプリケーションがシステムを最小化すると、http://msdn.microsoft.com/en-us/library/ms686234%28VS.85%29.aspx [SetProcessWorkingSetSize]プロシージャがプロセスの空き非アクティブメモリを呼び出します。

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

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

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

よろしく


1


https://stackoverflow.com/questions/2031577/can-memory-be-cleaned-up [この質問]でバリー・ケリーの答えを参照してください。