Переполнение памяти из-за не удаленных объектов - PullRequest
0 голосов
/ 01 марта 2020

Я использую метод stati c в C# для решения численной задачи. Я делаю это несколько раз во время выполнения моей программы. Через некоторое время программа вылетает из-за переполнения памяти. Я думаю, что что-то остается в основной памяти каждый раз, когда я вызываю метод stati c. Я думаю, что это объект Dictionary, который я использую следующим образом:

public static Solution solve(Problem p)
{
  Dictionary<String, List<int>> tours = new Dictionary<string, List<int>>();
  /*do stuff*/
  List<int>[] toursarray = new List<int>[tours.Count];
  int counter = 0;
  foreach (KeyValuePair<String, List<int>> kvp in tours)
  {
    toursarray[counter] = kvp.Value;
    counter++;
  }
  tours.Clear();
  tours = null;
  /*do stuff*/
  for (int t = 0; t < toursarray.Length; t++)
    toursarray[t] = null;
}

Есть ли какой-либо инструмент отладки, который я могу использовать, чтобы проверить, остались ли в памяти List<int> объекты? Я использую сообщество Visual Studio. Кроме того, что я могу сделать, чтобы избежать «скрытых объектов» в памяти?

...