Похоже, что у вас есть утечка памяти или ресурсов. Время взломать профайлер и посмотреть, что потребляет ресурсы или память.
Хорошие профайлеры включают
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler
и
http://memprofiler.com/
- это прикрепить к запущенному процессу и посмотреть, что из-под контроля.
В общем случае этот вид проблемы может быть вызван объектами, которые реализуют IDisposable
, не удаляясь по вызову Dispose()
. Память и ресурсы, используемые этими объектами, не управляются сборщиком мусора .NET, поэтому (в отличие от обычных объектов .NET) они не будут автоматически очищены системой.
Профилировщик обычно скажет вам, если это проблема.
Существуют и другие ситуации, в которых это может произойти, например
- Распределение очень больших блоков памяти, например, 40Gb
- Очень загруженные системы, которые не имеют возможности правильно собирать мусор, могут превышать их распределение виртуальной памяти.
Опять же, профилировщик расскажет вам, где проблема, скорее всего, будет лгать.
Кажется единственным решением, используйте профайлер. Спасибо за ссылки –
Большинство профайлеров имеют 30-дневную бесплатную пробную версию ... которая может быть полезна! –
Я вижу, что для memprofiler да ;-) –