如何在C#.NET中设置Process.GetCurrentProcess().PeakWorkingSet64的值

如何在C#.NET中设置Process.GetCurrentProcess().PeakWorkingSet64的值,c#,.net,c#-4.0,C#,.net,C# 4.0,我想知道如何在.NET 4.0中设置以下值(它有一个getter,但没有setter): Process.GetCurrentProcess().PeakWorkingSet64() 更新: 我想将其设置为一个非常高的值,以减少由于程序工作集的增加而导致的软页面错误。这可能有助于解决我们通过探查器发现的延迟问题 更新: 正如玉秀所指出的,你不能设定峰值(这是一个观察)。我真正想做的是为64位进程设置工作集: Process.GetCurrentProcess().WorkingSet64()=x

我想知道如何在.NET 4.0中设置以下值(它有一个getter,但没有setter):

Process.GetCurrentProcess().PeakWorkingSet64()

更新:

我想将其设置为一个非常高的值,以减少由于程序工作集的增加而导致的软页面错误。这可能有助于解决我们通过探查器发现的延迟问题

更新:

正如玉秀所指出的,你不能设定峰值(这是一个观察)。我真正想做的是为64位进程设置工作集:

Process.GetCurrentProcess().WorkingSet64()=xxx

更新:

此问题的正确答案是您所处的位置,该位置位于.NET via中

Process.GetCurrentProcess().MinWorkingSet = xxx;

通过这种方式,您可以确保(几乎)所有页面都不会被调出。在处理延迟时,分页只是一个问题。如果你有一个大的对象图,GC时间也会对延迟时间产生负面影响。从本质上讲,大小确实很重要。如果您减少总体内存消耗,您将获得更短的GC时间和更少的工作集,这样就更不可能被分页

这有点像在车上设置里程表。var setDiff=new byte[Math.Max(0,targetsWS-Process.GetCurrentProcess().PeakWorkingSet64());峰值工作集是一种观察,而不是一种配置。你不能仅仅通过改变一个数字来改变观察值。你必须改变潜在的现象本身。对于延迟问题,正确的解决方法是在初始化时加载所有需要的内存。@Yuxiu是的,你是对的-它应该是WorkingSet64而不是PeakWorkingSet64。我可以这样做,但不幸的是,它不会影响WorkingSet64。我认为此Windows API没有任何作用。当前找不到引用。这可用于设置值,但要设置64位工作集,请参阅