我在设置的应用程序上遇到了一些内存问题,这些应用程序经常在自定义对象列表中使用“removeall”。在运行此函数以清理任何混乱之前,是否应该对要删除的每个对象执行某些操作?
谢谢!
答案 0 :(得分:2)
RemoveAll将从您的收藏中删除它们。如果对象有任何其他引用,那么它们将继续存在。
您还可以使用一些需要清理的非托管资源。通常,如果您正在实现IDisposable,并且在Finalize方法中确保它们被清理,您可以将它们放在Dispose方法中。
否则,垃圾收集器将清理所有托管资源。这可能导致的唯一问题(这非常罕见)是垃圾收集器以较低的优先级运行,如果处理器严重挂起,则可能无法获得足够的周期来清理内存。
答案 1 :(得分:1)
一般来说,没有。让垃圾收集器完成它的工作。
如果对象实现IDisposable
,您可能会在其上调用Dispose
,但前提是您知道它们没有在其他任何地方使用过。
如果列表非常大,列表本身可能与您的问题有关。大名单是large object heap fragmentation的常见原因。在这种情况下,您无需关心列表中包含的对象。
如果您更详细地描述您的记忆问题,您可能会得到更有帮助的答案。