我有一个人口众多的数组列表,我想清除它并重新使用它。如果我清除它,它会释放以前使用的内存吗?
我还应该提到,arraylist 是一个类的私有(private)只读字段,在我第一次使用 arraylist 之后,它仍然有很多事件工作要做。所以我等不及类超出范围后的垃圾回收。
Clear 方法是否足够快?或者我应该销毁并创建一个新的数组列表?
问题更新:
如果我有这样声明的字段(感谢 Jon 的建议)
/// <summary>
/// Collection of tasks.
/// </summary>
private List<Task> tasks = new List<Task>();
然后我填充它....(大量)
现在如果不是清除它和修整,我可以调用:
tasks = new List<Task>();
这会被推荐吗?
最佳答案
做哪个能更好地表达您的意图。您真的想要一个新列表吗?如果是这样,请创建一个新的。如果您在概念上想重复使用相同的列表,请调用 Clear
.
ArrayList
的文档确实声明 Clear
保留原始容量 - 所以你仍然会有一个大数组,但它会充满空值而不是对前面元素的引用:
Capacity
remains unchanged. To reset the capacity of theArrayList
, callTrimToSize
or set theCapacity
property directly. Trimming an emptyArrayList
sets the capacity of theArrayList
to the default capacity.
您使用 ArrayList
的任何原因而不是 List<T>
顺便说一句?
关于c# - .net ArrayList.Clear 释放内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059824/