内存泄漏 - 任何可能的猜测

时间:2012-05-11 20:19:55

标签: c# wcf nhibernate automapper-2

我正在开发.Net项目(Windows服务),我发现了内存泄漏。使用ANTS内存分析器,我已经确定 - 根本原因是在非托管内存范围内。但我不使用任何COM / COM +或p / invoke - 纯.Net(DataAcces - Fluent nHibernate,Automapper,WCF)..

假设,可能是什么原因?我怎样才能找到瓶颈......我对任何一种经历都感兴趣,他们面对并解决了这样的问题

更多细节:

  • 我知道对象如何处理(并且做得对)
  • 我(差不多)不使用活动
  • 我正在使用计时器
  • 我正在使用多线程(但它很平行)
  • 我的应用程序不是无状态的 - 我在生命周期中跟踪对象

1 个答案:

答案 0 :(得分:2)

关于内存泄漏

一般来说,内存泄漏仍然存在于.net中。 (排序,并非所有这些都是教科书内存泄漏本身)因为事情陷入第2代垃圾收集或不处理从IDisposable继承的对象或那个问题流,事件,SQL连接保持开放和弄乱你的连接池。虽然我不是这方面的专家,但我会指出你可以帮助你完成任务的几个地方。

当你在它的时候,垃圾收集的工作方式很有帮助,这有很大的帮助。从像The Fundementals of Garbage Collection这样的东西开始,可以全面了解幕后所有.NET魔法的内容。

在COM Stuff

在.NET中固有的很多东西只是com和/或win32包装器在幕后调用PInvoke。如果你想要的内容是肮脏的,那么我建议你看看你怀疑泄漏代码的反编译器(如IL Spy)。

检查这一点,以便对所有与包装相关的内容进行更深入的讨论。
Is .NET A Wrapper Around Win32?