Ниже приведен простой код консольного приложения, которое многократно запускает асинхронный вызов, но не ожидает.Вызываемая функция выдает исключение.Запуск этого консольного приложения дает следующие результаты:
- В VS под отладчиком - использование памяти не меняется.Нет утечек.
- Запустите exe-файл напрямую (вне vs и не под отладчиком) - память продолжает расти до ГБС и, в конечном итоге, OOM составляет около ~ 4 ГБ.
Я не уверенкак объяснить эти результаты.Любая помощь будет принята с благодарностью.
static void Main(string[] args)
{
while (true)
{
Task.Run(() => RunMain());
}
Console.ReadLine();
}
static Exception ex = new Exception();
private static void RunMain()
{
throw ex;
}
edit: Меня прежде всего интересует, почему утечка памяти происходит, когда ненаблюдаемые исключения генерируются постоянно.