跟踪.NET Windows服务内存泄漏

Mhd*_*Mhd 12 c# memory-leaks

在生产中安装我的Windows服务之前,我一直在寻找可以执行的可靠测试,以确保我的代码不包含内存泄漏.但是,我在网上找到的所有内容都是使用任务管理器查看已用内存或某些付费内存分析器工具.

根据我的理解,查看任务管理器并不是真正有用,也无法确认内存泄漏(如果有的话).

  1. 如何确认是否有内存泄漏?

  2. 有没有免费的工具来查找内存泄漏的来源?

注意:我正在使用.Net Framework 4.6和Visual Studio 2015社区

Fas*_*tAl 9

那么你可以使用任务管理器.GC应用程序可能泄漏内存,它将显示在那里.

但...

免费工具 - ".Net CLR profiler"

有一个免费的工具,它来自微软,它很棒.这是泄漏引用的所有程序必须使用的.搜索MS'网站.

泄漏引用意味着您忘记将对象引用设置为null,或者它们永远不会留下范围,这几乎与垃圾收集的语言一样不会发生 - 列表构建和不清除,指向委托的事件处理程序等.

这是GC等效的内存泄漏,并具有相同的结果.这个程序告诉你哪些引用占用了大量内存 - 你会知道它是否应该是这样的,如果没有,你可以找到它们并解决问题!

它甚至可以很清楚地显示哪些对象分配了什么内存(因此您可以追踪错误).如果你需要解释,我相信你有这些.

内存使用可视化

维基百科页面,下载链接...

注意:您可能不得不运行您的应用程序而不是使用此服务.它首先启动,然后运行您的应用程序.您可以使用TopShelf执行此操作,也可以将内容放入从EXE运行的dll中,该EXE支持服务集成(服务主机模式).