Ian*_*nT8 5 .net c# windows memory-leaks windows-services
我在Windows Server 2008上运行用C#编写的.NET 4 Windows服务,在使用PerfMon监控时,每小时消耗2,500个句柄."Handle Count"计数器向上攀升.
当我使用ProcExp查看带有"显示未命名的句柄和映射"选项的句柄时,会列出数千个事件和信号量句柄.大多数人似乎都不知名.我查看了源代码,并没有明确使用AutoResetEvent或ManualResetEvent.
私人字节计数器爬升和下降.我没有看过这个过程超过几个小时,但会让它在一夜之间受到监控.
该服务在远程服务器上运行,因此我无法直接连接调试器,并且可能必须转储该进程并使用WinDBG或类似方法对其进行分析.
是否可以找到其中一个手柄并找出它指向的位置和/或可能"拥有"它的内容?如果是这样的话?
在回应评论时,这里是服务的功能摘要.
故障排除背后的基本概念是隔离。进程和状态方面的隔离。
您需要做的第一件事是在您控制的环境中重现问题。尝试在您的开发计算机上进行设置,如果在开发环境中设置某些服务需要很长时间,请考虑模拟它们。
一旦您控制了环境,您就可以通过模拟或存根来开始削减正在执行的代码。
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |