Освобождение памяти в потоках - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Помогите пожалуйста, товарищи программисты. Приложение может создавать от 1 до N параллельных одновременно работающих потоков (стандартно до 10-15) по ОДНОМУ НАПРАВЛЕНИЮ. "Одно направление" - это тоже поток. Направлений до 10. То есть я имею порядка 10 потоков, внутри каждого из которых создаётся ещё масса потоков, но что бы не убить систему сразу, используется пул потоков, который контролирует максимально возможное кол-во работающих потоков одновременно. Проблема в том, что по задумке внутренние потоки создаются, и, доходя до своего логического конца, самоуничтожаются (так я думаю), но беда в том, что объём используемой оперативной памяти, не смотря на это, только растёт, и растёт довольно быстро. Так вскоре забивается вся оперативная память (6 гб) и я даже не знаю что и делать... Такое впечатление, что потоки после завершения работы, используемые ресурсы не удаляют за собой (либо сборщик мусора не делает этого). Как бы то ни было, потоки создаются и успешно завершаются в пуле, но память продолжает забиваться и забиваться, без освобождения... Помогите пожалуйста, что с этим можно сделать?

Решение задачи: «Освобождение памяти в потоках»

textual
Листинг программы
SetProcessWorkingSetSize( System.Diagnostics.Process.GetCurrentProcess().Handle,-1, -1 );

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5