以下のコードを使用して、実行中のプログラムのメモリを解放しています。これは、自分のプログラムを高速に実行するには大きなメモリ リソースが必要だからです。
[DllImport("psapi.dll")]
public static extern bool EmptyWorkingSet(IntPtr hProcess);
public FreeMem(string programName){
EmptyWorkingSet(Process.GetCurrentProcess().Handle);
foreach(Process process in Process.GetProcesses(programName))
{
try
{
EmptyWorkingSet(process.Handle);
}
catch (Exception)
{
...
}
}
}
正常に動作しているようです。エクスプローラーなどの一部のプログラムのメモリ使用量を 100,000 Kb から 2,000 Kb に下げることができました。それはかなり良いですが、これを行うことによる副作用はありますか? Yamicsoft Vista/Xp マネージャーや Firefox Optimizer などの一部の商用ソフトウェアもこれを使用しています。