当前,我刚刚检查了MemoryFailPoint
,因为它是我所知道的唯一的内存保护。但是文档中提到它可以更改交换文件的大小,并且简单的测试表明它可能是正确的,这意味着它不是解决我的问题的正确工具:
using (new MemoryFailPoint(10*1024)) // I have 10GB available memory
{
// memory consuming computation (around 2GB)
}
它没有触发任何异常-我观察了任务管理器如何显示越来越少的内存,从10GB下降到8GB,但是所有计算都成功完成了。因此,对它的文档来说确实如此,问题对我没有用。
是否可以为实际的物理可用内存设置内存保护?我想设置限制,进行计算,如果可用内存降到限制以下,我想获取异常。因此,基本上它的行为与MFP
相同,但针对的是实内存,没有交换/虚拟内存。
还是我一开始就误解了MFP
的工作原理?
预先回答-等待常规的OutOfMemory是行不通的,我需要比这更强大的程序。