.NET делает ArrayList. Ясный свободный память?

У меня есть в большой степени заполненный arraylist, который я хочу очистить и снова использовать. Если я очищу его, то действительно ли это освободит, который ранее использовал память?

Я должен также упомянуть, что arraylist является частным полем только для чтения класса, который все еще имеет большую активную работу, чтобы сделать после того, как я использую arraylist в первый раз вокруг. Таким образом, я не могу ждать сборки "мусора" после того, как класс выйдет из объема.

Четкий метод достаточно быстро? Или я должен уничтожить и создать новый arraylist?

Обновление вопроса:

Если мне объявили поле как это (благодаря совету Jon)

    /// <summary>
    /// Collection of tasks.
    /// </summary>
    private List<Task> tasks = new List<Task>();

затем я заполняю его.... (в большой степени)

Теперь, если вместо того, чтобы очистить его и обрезать, может я просто звонить:

tasks = new List<Task>(); 

Это было бы рекомендовано?

7
задан George Stocker 25 October 2010 в 16:18
поделиться

2 ответа

Делайте то, что лучше выражает ваши намерения. Вы на самом деле хотите новый список? Если да, создайте новый. Если вы концептуально хотите повторно использовать тот же самый список, позвоните Clear.

В документации к ArrayList действительно указано, что Clear сохраняет первоначальную емкость - таким образом, у вас все равно будет большой массив, но он будет заполнен нулями вместо ссылки на предыдущие элементы:

Емкость остается неизменной. Для сброса емкость ArrayList, вызов TrimToSize или установите Емкость . собственность напрямую. Обрезка пустого Массивный список устанавливает емкость Массивный список по умолчанию.

Кстати, по какой причине вы используете ArrayList, а не List?

.
16
ответ дан 6 December 2019 в 10:00
поделиться

Если вы хотите, чтобы память фактически была бесплатной, установите его на NULL и вызовут сборщик мусора. Затем создайте новый ArrayList. Если вы устанавливаете его на NULL, а затем создайте новый, он в конечном итоге получает сбор мусора, когда требуется дополнительная память. Кроме того, я второй общие коллекции. С тех пор я был долгое время, так как я использовал ArrayList.

3
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: