У меня есть многопоточное приложение, которое управляет данными в памяти (без доступа к базе данных или сети). Я попробовал это на двух машинах, одна машина - двухъядерный процессор Xeon с четырьмя ядрами, а другой - двухжильные. Создано 5 нитей.C# многопоточность использования памяти - замедление работы приложений и падение использования процессора
Затем этот многопоточный процесс запускается очень быстро, а загрузка процессора составляет 60% для 5 ядер, физическая память составляет 50% от объема оперативной памяти. (Информация из диспетчера задач). После того, как он достигнет 1/3 пути, он начинает замедляться, а загрузка процессора падает чуть ниже 20%. К тому времени, когда он дойдет до 2/3, он так медленно, что для завершения последней трети требуется 1 день, а для первого 1/3 требуется полчаса.
Процесс создает много SortedLists и Lists, поэтому я начинаю подозревать, что сборщик мусора не справляется, хотя использование памяти диспетчера задач не так уж плохо ... Я хочу попытаться заставить GC бесплатно неиспользованные коллекции немедленно, это разумно или даже выполнимо? И почему загрузка процессора падает?
Google "блокировка конвоя". –