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