我正在使用下面的代码来释放一些正在运行的程序的内存,因为我自己的程序需要大量内存资源才能更快地运行。
[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 等等,所以我在想这是否没有不好的副作用或者是否存在?