c# - 限制 .NET 进程可以使用的最大 RAM 量?

标签 c# .net memory-management process

我有一个 .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/

相关文章:

c# - 使用非托管资源

c# - 不同品牌的网站版本、资源文件?

.net - 更新 VB 控制台中的当前行

c# - 使用 foreach 循环两个以上的 list<string>

c# - 无法在C#中为列表添加值

objective-c - 释放先前释放的对象问题

objective-c - 在 objective-c 中在二传手中保留和释放

SQL Server : force cleanup of deallocated internal objects in tempdb to release disk space reserved for them within an opened session

c# - OutputCache 属性不适用于 .NET 7 API 端点

c# - 在运行时即时更改应用程序语言