我有一个进行大量文本解析的应用程序。每次通过后,它都会将一些信息吐出到数据库中并清除所有内部状态。
我的问题是 Windows 任务管理器/资源监视器中分配的内存不断增长。我已经使用 .Net Mem Profiler 完成了一些配置文件,看起来它应该会下降。这是探查器的屏幕截图:
但是在任务管理器中,每次通过内存私有(private)工作集后都会增加。我希望内存随着使用而增长,然后在每次通过后恢复到正常水平,这样我就可以让这个东西继续运行。
关于寻找什么的任何建议或导致这种情况的任何想法?
最佳答案
需要检查的几件事是:
- 事件处理程序使对象保持事件状态,确保如果订阅事件的对象在对象发布事件之前超出范围,它会取消订阅事件以防止发布对象保留对它的引用。
- 确保对任何实现了 IDisposable 的对象调用了 dispose。一般来说,实现 IDisposable 的对象包含需要特别整理的资源。
- 如果您引用任何 com 对象,请确保正确释放它们。
您永远不必在生产代码中调用 GC.Collect()
。
关于c# - .Net 内存增长问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847795/