C# 我可以为流程设置上限吗';内存使用情况如何?

C# 我可以为流程设置上限吗';内存使用情况如何?,c#,.net,windows,C#,.net,Windows,是否有可能人为地限制.NET进程可以使用的内存量?我希望模拟内存不足的情况进行测试 现在我们用虚拟机来做这类事情。这是可行的,但我很想知道我们是否能想出一个更方便的方法。一个易于自动化的系统将是理想的 编辑:正如Hans Passant指出的那样,仅仅限制进程可用的虚拟内存量并不能取代基于VM的测试。这些测试是针对性能的,因此我需要进行交换,而不是OutOfMemoryExceptionwindows应用程序验证工具可以模拟低资源级别,例如低内存: 使用作业对象的更具编程性的解决方案(正如@Re

是否有可能人为地限制.NET进程可以使用的内存量?我希望模拟内存不足的情况进行测试

现在我们用虚拟机来做这类事情。这是可行的,但我很想知道我们是否能想出一个更方便的方法。一个易于自动化的系统将是理想的


编辑:正如Hans Passant指出的那样,仅仅限制进程可用的虚拟内存量并不能取代基于VM的测试。这些测试是针对性能的,因此我需要进行交换,而不是
OutOfMemoryException

windows应用程序验证工具可以模拟低资源级别,例如低内存:

使用作业对象的更具编程性的解决方案(正如@ReedCopsey所建议的)如下:

一个易于自动化的系统将是理想的

您可以使用从代码管理此项。进程可以与作业关联,并允许您限制工作集大小

或者,您可以直接调用该进程,这将限制该进程允许的最大内存使用量

现在我们用虚拟机来做这类事情

这可能意味着您限制了RAM的数量。这不是什么测试,Windows进程永远不会耗尽RAM。您只会减慢进程,操作系统将更频繁地交换页面

真正的限制是可用的虚拟内存地址空间。它是32位进程的固定数字,2 GB。给出或接受一些非标准选项以增加该数字。OutOfMemoryException告诉您,进程在VM中没有足够大的洞来容纳分配


您可以通过简单地分配一组50MB[]数组并将它们存储在Main()开头的类型为
List
的静态变量中来限制VM空间量。

类似的问题:。。。我甚至可以认为这是一个复制品。但这是两个不同的问题,要求略有不同。谢谢你的提示。给后代补充一点:根据,应用程序验证程序拒绝使用托管代码。这一点很好。我想我现在需要编辑这个问题。刚刚发现的,它似乎是.NET中相当于
SetProcessWorkingSetSize
@SeanU Yes-这将调用SetProcessingWorkingSetSize