我有一个 .NET 进程,由于我不会详细说明的原因,它消耗了大量的 RAM。我想要做的是对该进程可以使用的 RAM 量实现上限。有办法做到这一点吗?
我发现的最接近的是Process.GetCurrentProcess().MaxWorkingSet
,根据我读过的文档,我认为它没有达到我想要的效果。
我想出的最好办法是使用 GC.GetTotalMemory(true) 来获取正在使用的 RAM 量,并在超过一定量时重新启动。但这并不理想。
最佳答案
您可以通过调用 SetProcessWorkingSetSizeEx 设置进程工作集的最小和最大大小或SetProcessWorkingSetSize .
有一个 pinvoke.net 条目 SetProcessWorkingSetSize .
请务必阅读 MSDN 文档以了解您决定调用的函数。
请注意,这不会阻止您的应用程序分配更多虚拟内存,而是会限制进程的虚拟内存在任何给定时间占用的物理 RAM 量。
关于c# - 限制 .NET 进程可以使用的最大 RAM 量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26767241/