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

理想的情况是为每个线程设置限制,但我认为这将行不通。测试在单独的过程或单独的AppDomain中执行。我知道如何使用ARM和ETW来监视(但不限制)AppDomain的资源,并且我尝试在进程级别上设置MaxWorkingSet,但这在系统内存承受压力之前没有作用。

当然,还有其他方法和变通方法来完成此操作,例如,通过在VM中运行测试或在启动选项上限制Wi​​ndows内存。启动第二个分配大量内存的进程。

即使系统上有可用的物理内存,有没有办法专门限制进程/ AppDomain可以使用的物理内存?可能也可以限制虚拟内存吗?

最佳答案

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

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

如果使用Parallel类,则可以set the max degree of parallelisation

09-03 20:36