我拥有非常适合性能/内存分析的Ants Profiler 4。.net可用于配置远程计算机的内存分析器
不幸的是它只能在本地机器上工作,我无法附加到正在运行的进程。 但我有一个内存泄漏,似乎只在我们的生产服务器上发生。在vb.net中编写的一个Windows控制台应用程序运行良好,持续几天的内存使用情况,然后突然开始消耗所有可用内存,直到24小时内。
有没有办法从运行过程中收集一些数据并检查它?
我拥有非常适合性能/内存分析的Ants Profiler 4。.net可用于配置远程计算机的内存分析器
不幸的是它只能在本地机器上工作,我无法附加到正在运行的进程。 但我有一个内存泄漏,似乎只在我们的生产服务器上发生。在vb.net中编写的一个Windows控制台应用程序运行良好,持续几天的内存使用情况,然后突然开始消耗所有可用内存,直到24小时内。
有没有办法从运行过程中收集一些数据并检查它?
在撰写本文时,两大.NET商业性能分析器-ANTS和dotTrace仍然不支持远程分析内存分配。悲伤的脸。
我正在自己研究这个问题,目前正在寻找两种选择。首先是微软的CLR探查:
http://clrprofiler.codeplex.com/
虽然这并不支持远程分析,它确实有完整的源。我认为向它添加一些命令行选项并不需要太多工作,这些命令行选项可让您告诉它附加到进程,获取内存快照并发送到磁盘,然后分离。使用Powershell在现场服务器上远程执行它,然后我可以在桌面上闲暇时分析快照。
我正在考虑的另一个选项是从实时应用程序中获取一个小型转储并使用sos运行正在使用的内存的报告。请注意,不幸的是,由于this bug,不能使用procdump -r完成小型转储,因此必须执行完全冻结转储。
平凡的工作方式和我刚刚开始,但我还没有找到一个更好的解决方案。
啊,我们走吧。这是一个商业解决方案,它具有可在生产服务器上运行的“内存快照”功能,用于在工作站上进行分析:http://memprofiler.com/nmpcore.aspx – scobi 2013-05-24 22:48:34
什么是Windows版本的服务器?如果从任务管理器执行内存转储是一个选项,则可以执行WinDbg路由。 – 2010-08-12 11:21:08