Предположим, что у меня есть большой список, где каждый элемент обрабатывается один раз, а затем никогда не просматривался снова во время длительной операции:
List<T> items;
// ... some stuff is done with the list then finally
for(int i = 0; i < items.Count; i++)
{
SomeOperation(items[i]);
//items[i] never used again at this point
// say i do this:
// items[i] = null;
}
Если я раскомментирую items[i] = null
, это приведет к выкручиванию объекта по индексу i
и сделает его доступным для коллекции мусора?
Было бы более эффективным, с точки зрения использования памяти, сделать это в сравнении с тем, что GC произойдет позже, когда весь список не будет использоваться по дороге.
Это игнорирует некоторые проблемы, такие как смена кода позже, и оказывается, что элементы используются позже и неожиданно опустошают хаос.