2012-05-24 32 views
1

有没有办法将ANTS附加到服务上,特别是在版本不是调试的情况下?ANTS内存分析器 - 分析器是否可以连接到内置版本的服务?

理想情况下,我希望能够生成一个转储,然后通过非常愉快的ANTS UI重播它。 ANTS能做到吗?如果不是有工具可以吗?

+1

VS分析器可以做到这一点。例如:http://msdn.microsoft.com/en-us/library/dd255414.aspx –

+0

该链接已损坏,但我认为您正在谈论Intellitrace。我很遗憾没有VS2010的4,000美元版本:( – kmarks2

+1

VS Profiler附带了Premium而不是Ultimate(它带有Intellitrace),但是,它不是免费的:(CLR Profiler是免费的,你可以将它附加到一个进程:http://blogs.msdn.com/b/davbr/archive/2011/02/01/clrprofiler-v4-released.aspx –

回答

1

如果您的服务是.Net 4,那么您可以通过附加到流程来确定它的概况。您也可以为此服务的发布版本做到这一点。如果需要,请确保显示所有用户的进程 - 然后刷新列表以确保您在列表中看到您的服务。

当使用内存分析器附加到.Net4进程时,您需要禁用并发垃圾收集,有关如何执行此操作的说明是here

只要您禁用了并发收集,只需附加到服务的.Net4进程,并在需要时与它进行交互,同时在应用程序处于期望状态时拍摄内存快照。 您还可以使用内存分析器公开的API自动执行应用程序代码中的快照,这是解释为here

+0

Upvote/solve。这是好东西。我打算通过禁用并发垃圾收集? – kmarks2

+0

[link](http: //www.red-gate.com/SupportCenter/content/ANTS_Memory_Profiler/help/7.4/amp_attachtoprocess):虽然并发垃圾回收被禁用,但您的应用程序运行速度会更快,但可能会暂停,以允许发生垃圾回收。 虽然并发garbag e集合被禁用,应用程序的总内存占用量将有所增加。这是因为并发垃圾收集器通常会在另一个线程上构建不可达对象的图形。这种差异不应该足以改变ANTS所显示的结果 –