【发布时间】:2011-01-04 19:31:50
【问题描述】:
我有一个人口众多的数组列表,我想清除并重用它。如果我清除它会释放以前使用的内存吗?
我还应该提到,arraylist 是一个类的私有只读字段,在我第一次使用 arraylist 后仍有许多活动工作要做。所以我等不及类超出范围后的垃圾收集。
Clear 方法是否足够快?还是我应该销毁并创建一个新的数组列表?
问题更新:
如果我有这样声明的字段(感谢 Jon 的建议)
/// <summary>
/// Collection of tasks.
/// </summary>
private List<Task> tasks = new List<Task>();
然后我填充它....(大量)
现在如果不是清除和修剪,我可以打电话吗:
tasks = new List<Task>();
会推荐这个吗?
【问题讨论】:
-
+1 为乔恩,因为他已经真正报道过了。然而,Clear 无论如何都不会真正释放内存——只有垃圾收集器才会这样做。正确编写的 IDisposable 对象还在其 Dispose 实现中释放非托管内存 - 如果适用。也许我只是在迂腐:)
-
很好,Andras,但我认为让该内存准备好进行垃圾收集就足够了。