2

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

谢谢!

4

2 回答 2

2

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

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

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

于 2012-09-17T15:26:16.810 回答
1

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

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

如果列表非常大,则列表本身可能与您的问题有关。大列表是大对象堆碎片的常见原因。在这种情况下,您无需关心列表中包含的对象。

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

于 2012-09-17T15:20:12.743 回答