所以我想在低内存条件下测试我的Windows应用程序,我发现最简单的方法是创建另一个只占用内存的应用程序(控制台应用程序)。
我创造了这个怪物:
while (true)
{
try
{
Marshal.AllocHGlobal(1024);
}
catch{}
}
但它只有3.7 GB。然后我打开这个应用程序的另一个实例,然后它又回来了。
如何让垃圾收集器不收集我的分配?
或者:我如何在通用Windows应用程序上测试低内存条件?
答案 0 :(得分:3)
您可以尝试将GCSettings延迟模式更改为SustainedLowLatency,这样可以避免垃圾收集,除非系统耗尽。
GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;
答案 1 :(得分:1)
您可能正在遇到限制,因为您正在以32位进程运行内存耗尽,只能处理~4GB内存。
尝试以64位进程运行(显式编译x64),或者生成多个副本。
也就是说,有更好的方法可以限制被测进程的可用内存。这里给出一个例子:Set Windows process (or user) memory limit