gpt4 book ai didi

c# - 使用 EmptyWorkingSet 有什么副作用?

转载 作者:太空狗 更新时间:2023-10-29 20:35:35 26 4
gpt4 key购买 nike

我正在使用下面的代码来释放一些正在运行的程序的内存,因为我自己的程序需要大量内存资源才能运行得更快。

[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 等等,所以我在想这是否没有不良副作用?

最佳答案

我怀疑副作用会影响那些其他程序的性能 - 系统会在进程需要它们时将通过调用 EmptyWorkingSet() 换出的页面带回来。

在如此低的级别上干扰系统充满了危险:特别是,Explorer 页面错误可能会减慢系统速度,导致奇怪的死锁开始抬头。最好将此留给 Windows,特别是对于您未编写的其他程序。

您可能会发现更有效地理解为什么您自己的程序需要这么多内存。也许某处有泄漏?

关于c# - 使用 EmptyWorkingSet 有什么副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com