您更有可能发生内存泄漏,并且手动调用GC无助于此:如果您的代码尚未释放它,则无法处置对象。
的 编辑 强>
由于您的GC处理正在增加, 这一页 表明存在未被释放的非托管资源。例如,我在位图中遇到过这种情况,但您可能需要告诉我们更多有关您的应用程序以获得更具体的建议。
这是一个主题 这可能会给你一些有用的见解。
它可能不一定是内存问题。使用Windows性能监视器(查看管理工具)来监视应用程序的CPU,内存,GDI对象计数,句柄计数,以及在应用程序的整个生命周期中是否有任何这些似乎都在攀升。
通常,您会发现您正在使用System.Drawing中的某些内容而不是在其上调用Dispose(),从而导致句柄泄漏。我发现手柄泄漏往往比内存泄漏更快地消耗性能。并且处理泄漏导致没有GC压力,这意味着您可能像筛子一样泄漏手柄并且GC不会知道差异。
所以,长话短说:衡量,衡量,衡量。然后你会知道要修复什么。
你可以打电话 GC.Collect() 强制垃圾收集,但这不会修复内存泄漏。尝试像ANTS内存分析器一样的内存分析器来查找内存泄漏。
GC.Collect()
ANTS内存分析器