Было интересно, может ли кто-нибудь пролить свет на это.Сборка мусора слишком поздно - причины исключений OutOfMemory
У меня есть приложение с большой площадью памяти (& сбой памяти). Нет утечек памяти, и GC, как правило, делают хорошую работу по освобождению ресурсов.
Иногда, однако, GC не происходит «вовремя», вызывая исключение из памяти. Мне было интересно, может ли кто-нибудь пролить свет на это?
Я использовал профилировщик REDGate, что очень хорошо - приложение имеет типичный «пилообразный» узор - OOMs происходят в верхней части пилообразного пиления. К сожалению, профилировщик не может быть использован (AFAIK) для выявления источников оттока памяти.
Возможно ли установить «мягкий предел» памяти, на котором должен быть принудительно установлен GC? В настоящий момент GC выполняется только тогда, когда память находится на своем абсолютном пределе, что приводит к OOM.
Вы использовали http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/, чтобы убедиться, что утечек нет? –
Невозможно обернуть большие части в приложениях или вызвать GC.Collect иногда? – slawekwin
Вы можете заставить GC работать. просмотрите эти [SO post] (http://stackoverflow.com/questions/4257372/how-to-force-garbage-collector-to-run), [еще одно сообщение SO] (http://stackoverflow.com/questions/233596/best-practice-for-forcing-garbage-collection-in-c-sharp) – scheien