.net does ArrayList.Clear free up memory?
.net, arraylist, c#
Solution
Do whichever expresses your intention better. Do you actually want a new list? If so, create a new one. If you conceptually want to reuse the same list, call `Clear`.
The documentation for `ArrayList` does state that `Clear` retains the original capacity - so you'll still have a large array, but it'll be full of nulls instead of reference to the previous elements:
`Capacity` remains unchanged. To reset the capacity of the `ArrayList`, call `TrimToSize` or set the `Capacity` property directly. Trimming an empty `ArrayList` sets the capacity of the `ArrayList` to the default capacity.
Any reason you're using `ArrayList` rather than `List<T>` by the way?
Problem
I have a heavily populated arraylist, which I want to clear and reuse. If I clear it will it free up that previously used memory? I should also mention that the arraylist is a private read only field of a class that still has lots of active work to do after I use the arraylist first time round. So I can't wait for garbage collection after class goes out of scope. Is the Clear method fast enough? Or should I destroy and create a new arraylist? Question update: If I have field declared like this (thanks to Jon's advice) ``` /// <summary> /// Collection of tasks. /// </summary> private List<Task> tasks = new List<Task>(); ``` then I populate it.... (heavily) Now if instead of clearing it and trimming, can I just call: ``` tasks = new List<Task>(); ``` Would this be recommended?