了解内存使用

时间:2010-06-28 15:04:03

标签: .net memory

我有一个24x7全天候运行的Windows服务,内存使用量稳步上升,大约每周一次,我们必须重新启动它。

我正在寻找有关了解.NET中内存使用情况的信息,以便我可以清楚地了解我们的服务为何这样做。

我还想在.NET中更好地理解这一点。

有人有任何好的联系吗?

感谢

4 个答案:

答案 0 :(得分:4)

我没有任何链接,但听起来你在某个地方有内存泄漏 - 尽管我很难看到如何每周特别引入这个内容。您的服务是否在代码中注册事件?这些通常都会导致内存泄漏(注册事件的对象已完成,但处理程序 未注册,这意味着存在实时引用,因此对象不能是垃圾收集)。

Unregistered event handlers cause memory leak

答案 1 :(得分:2)

嗯,这很简单:GC不时运行并删除死对象。当没有实时参考指向它时,对象被认为是死的。生命引用通过从根开始(例如静态变量,CPU寄存器等)和遍历所有对象来确定。所有未达到的对象都已死亡。

因此,为了解决您的问题,您应该使用内存分析器并检查哪些对象留在内存中,例如由于具有“缓存”值等的静态字典而导致。

答案 2 :(得分:1)

您所看到的内容称为Memory Leak。网上有大量资源可供使用。我不确定这是一个有效的问题,除非您想为我们提供一些代码来识别泄漏。

答案 3 :(得分:0)