我编写了以下代码来检查是否有足够的内存,
while (true)
{
try
{
// Check for available memory.
memFailPoint = new MemoryFailPoint(250);
break;
}
catch (InsufficientMemoryException ex)
{
if (memFailPoint != null)
{
memFailPoint.Dispose();
}
Thread.Sleep(waitSecond * 1000);
}
}
我在 Windows 7 64 位机器上的控制台应用程序中运行上述内容。
此方法每 10 秒调用 4 次。
最初它工作正常,但在 2-3 小时后,总是有一个InsufficientMemoryException
抛出。我检查了可用内存,它显示超过 1 GB。
我尝试了很多,但我无法找到为什么会发生这种情况。
以下是堆栈跟踪:
at System.Runtime.MemoryFailPoint..ctor(Int32 sizeInMegabytes)
at SocketListner.AcceptConnection(IAsyncResult res) in H:\Projects\SocketListner.cs:line 308
没有内在的例外。