设置人工​​内存限制

时间:2013-07-18 09:05:07

标签: c# .net memory memory-management

我正在编写一个小型的PerformanceTest程序,我试图人为地重新调整可以在测试期间使用的内存。某些测试在处理多分辨率图像时需要几个小时才能运行,最高可达100 GB。

理想的是设置每个线程的限制,但我认为这不起作用。测试在单独的进程中或在单独的AppDomain中执行。我知道如何使用ARM和ETW监视(但不限制)AppDomain的资源,我试图在进程级别设置MaxWorkingSet,但在系统内存处于压力之前这没有任何影响。

原因是,还有其他方法和解决方法可以实现此目的,例如在VM中运行测试或在引导选项上限制Wi​​ndows内存。启动第二个分配大量内存的进程。

有没有办法人为地重写进程/ AppDomain可以使用的物理内存,即使系统上有可用的物理内存?也许可以限制虚拟内存吗?

1 个答案:

答案 0 :(得分:0)

不知道有任何此类功能可用,但我会限制内存消耗(与使用情况相反)。

因此,当您启动测试时,它将拥有一个计数器,它可以创建和操作多少个对象/线程。如果计数器值达到其允许的最大值,则测试将等待,直到其中一个线程/对象完成作业。

如果您使用Parallel课程,则可set the max degree of parallelisation