我们能否确定一个操作所需的充足内存是否可用?如果可以,那么如何确定呢? 谢谢。
不行,你绝对不能这样做,因为你事先不知道操作将消耗多少内存。如果你确切地知道操作将消耗多少内存,你可以查询可用的系统内存并进行近似计算,但不要依赖它。请记住,垃圾回收是相当不确定的,可能随时会出现问题,破坏你的近似值。你随时可能会遇到OutOfMemoryException。
所以,专注于编写高质量的代码而不是这个。
是的,你可以。
假设你知道该操作需要100MB。
System.Runtime.MemoryFailPoint memFailPoint = null;
int memUsageInMB = 100;
bool isEnoughMemory = false;
try
{
// Check for available memory.
memFailPoint = new MemoryFailPoint(memUsageInMB);
isEnoughMemory = true;
}
catch (InsufficientMemoryException e)
{
// MemoryFailPoint threw an exception.
Console.WriteLine("Expected InsufficientMemoryException thrown. Message: " + e.Message);
}
if (isEnoughMemory)
{
// Perform the operation.
}
else
{
// Show error message.
}
如果您满足最低要求并使用Banang的代码,则可以检查是否不足。
但是,假设您检查内存,下一行开始操作,在这两行之间的时间内运行另一个占用内存的进程。那么,您将冒着出现内存不足异常的风险。