对.NET进程可以使用的最大RAM数量设置限制

本文关键字:RAM 设置 进程 NET 可以使 | 更新日期: 2023-09-27 18:29:13

我有一个.NET进程,由于我不想深入讨论的原因,它消耗了大量的RAM。我想做的是实现这个进程可以使用的RAM数量的上限。有办法做到这一点吗?

我发现的最接近的是Process.GetCurrentProcess().MaxWorkingSet,根据我阅读的文档,我认为它不符合我的要求。

我想到的最好的方法是使用GC.GetTotalMemory(true)来获得正在使用的RAM数量,如果超过一定数量,则重新启动。但这并不理想。

对.NET进程可以使用的最大RAM数量设置限制

您可以通过调用SetProcessWorkingSetSizeEx或SetProcessWorking SetSize来设置进程工作集的最小和最大大小。

SetProcessWorkingSetSize有一个pinvoke.net条目。

无论您决定调用哪个函数,请务必阅读MSDN文档。

请注意,这并不能阻止应用程序分配更多的虚拟内存,而是限制了进程的虚拟内存在任何给定时间占用的物理RAM数量。