在对象列表上使用removeall时,是否完全从内存中删除了对象?

时间:2012-09-17 15:18:34

标签: vb.net

我在设置的应用程序上遇到了一些内存问题,这些应用程序经常在自定义对象列表中使用“removeall”。在运行此函数以清理任何混乱之前,是否应该对要删除的每个对象执行某些操作?

谢谢!

2 个答案:

答案 0 :(得分:2)

RemoveAll将从您的收藏中删除它们。如果对象有任何其他引用,那么它们将继续存在。

您还可以使用一些需要清理的非托管资源。通常,如果您正在实现IDisposable,并且在Finalize方法中确保它们被清理,您可以将它们放在Dispose方法中。

否则,垃圾收集器将清理所有托管资源。这可能导致的唯一问题(这非常罕见)是垃圾收集器以较低的优先级运行,如果处理器严重挂起,则可能无法获得足够的周期来清理内存。

答案 1 :(得分:1)

一般来说,没有。让垃圾收集器完成它的工作。

如果对象实现IDisposable,您可能会在其上调用Dispose,但前提是您知道它们没有在其他任何地方使用过。

如果列表非常大,列表本身可能与您的问题有关。大名单是large object heap fragmentation的常见原因。在这种情况下,您无需关心列表中包含的对象。

如果您更详细地描述您的记忆问题,您可能会得到更有帮助的答案。