Я написал следующий код для проверки достаточной памяти,
while (true)
{
try
{
// Check for available memory.
memFailPoint = new MemoryFailPoint(250);
break;
}
catch (InsufficientMemoryException ex)
{
if (memFailPoint != null)
{
memFailPoint.Dispose();
}
Thread.Sleep(waitSecond * 1000);
}
}
Я запускаю вышеуказанное в консольном приложении на 64-разрядной машине Windows 7.
Для этого метода используется 4 вызова каждые 10 секунд.
Изначально он отлично работает, но через 2-3 часа всегда вызывается InsufficientMemoryException
. Я проверил доступную память и отобразил более 1 ГБ.
Я много пробовал, но не смог найти, почему это происходит.
Ниже показана трассировка стека:
at System.Runtime.MemoryFailPoint..ctor(Int32 sizeInMegabytes)
at SocketListner.AcceptConnection(IAsyncResult res) in H:\Projects\SocketListner.cs:line 308
Внутреннее исключение отсутствует.