我正在编写一个小型的PerformanceTest程序,我试图人为地重新调整可以在测试期间使用的内存。某些测试在处理多分辨率图像时需要几个小时才能运行,最高可达100 GB。
理想的是设置每个线程的限制,但我认为这不起作用。测试在单独的进程中或在单独的AppDomain中执行。我知道如何使用ARM和ETW监视(但不限制)AppDomain的资源,我试图在进程级别设置MaxWorkingSet,但在系统内存处于压力之前这没有任何影响。
原因是,还有其他方法和解决方法可以实现此目的,例如在VM中运行测试或在引导选项上限制Windows内存。启动第二个分配大量内存的进程。
有没有办法人为地重写进程/ AppDomain可以使用的物理内存,即使系统上有可用的物理内存?也许可以限制虚拟内存吗?
答案 0 :(得分:0)
不知道有任何此类功能可用,但我会限制内存消耗(与使用情况相反)。
因此,当您启动测试时,它将拥有一个计数器,它可以创建和操作多少个对象/线程。如果计数器值达到其允许的最大值,则测试将等待,直到其中一个线程/对象完成作业。
如果您使用Parallel
课程,则可set the max degree of parallelisation。