我拥有Ants Profiler 4,非常适合性能/内存分析。
不幸的是它只适用于本地计算机,我无法连接到正在运行的进程。 但是我的内存泄漏似乎只在我们的生产服务器上出现。用vb.net编写的Windows控制台应用程序运行良好,内存使用量持续数天,然后突然开始消耗所有可用内存,直到24小时内。
有没有办法从正在运行的流程中收集一些数据并进行检查?
答案 0 :(得分:3)
在撰写本文时,两个主要的.NET商业剖析器--ANTS和dotTrace仍然不支持远程分析内存分配。悲伤的脸。
我自己正在研究这个问题,目前正在考虑两种选择。首先是微软的CLR Profiler:
http://clrprofiler.codeplex.com/
虽然这不支持远程分析,但它确实有完整源。我不认为向它添加一些命令行选项会让你告诉它附加到进程,获取内存快照并发送到磁盘,然后分离是太多的工作。使用Powershell在实时服务器上远程执行它,然后我可以在桌面上悠闲地分析快照。
我正在考虑的另一个选项是从实时应用程序中获取一个minidump并使用sos来运行正在使用的内存的报告。遗憾的是,由于this bug而无法使用procdump -r完成minidump,必须进行完全冻结转储。
无论从哪方面来说都是非常重要的工作,我刚刚开始,但我还没有找到更好的解决方案。
答案 1 :(得分:-1)
升级到最新版本(6.0)。这支持了Attach to Process,我认为,这就是你所追求的目标!