我正在寻找好的.NET CLR内存分析工具。
我的关键要求是它可以很好地与IIS和独立的CLR应用程序配合使用。理想情况下,我会看到分配了哪些对象,分配它们的位置以及它们的大小?
有没有人对您推荐的特定工具有任何良好的体验?
答案 0 :(得分:45)
我目前正在评估Scitech .NET Memory Profiler 3.1和ANTS Memory Profiler 5.1。我一年或两年前尝试过JetBrains,它不如ANTS好,所以这次我没有打扰过。通过阅读网站,它看起来像内存分析一样不如其他两个。
ANTS和Scitech内存分析器都具有另一个没有的功能,因此最好取决于您的偏好。一般来说,Scitech提供更详细的信息,而ANTS在识别泄漏对象时真的令人难以置信。总的来说,我更喜欢ANTS,因为它可以快速识别可能的泄漏。
以下是我的经验中各自的优缺点:
ANTS和Scitech .NET Memory Profiler的共同特征
<强> ANTS 强>
Scitech .NET Memory Profiler
总结一下,我认为ANTS可以帮助您更快地找到泄漏的内容,而Scitech会在您知道要查看的内容(例如创建时的堆栈跟踪)后提供有关整体应用程序内存性能和单个对象的更多详细信息。如果堆栈跟踪和跟踪未处置的一次性对象被添加到ANTS我不会看到需要使用其他任何东西。
答案 1 :(得分:31)
奇怪的是,此处尚未提及CLR Profiler。它是免费的,效果很好。
请注意Microsoft自己的网站提供的多个旧版本。截至2011年11月,最新版本似乎是这一个:latest version (alternate link)
答案 2 :(得分:8)
如果您感到非常绝望,可以使用.Net框架附带的WinDbg with the Son-of-Strike library(SOS.DLL)。
答案 3 :(得分:6)
JetBrains Profiler我自己的忠实粉丝
答案 4 :(得分:5)
.Net Memory Profiler在我之前的项目中帮了我很多忙。这不是免费的,但它非常好。
.NET Memory Profiler功能强大 用于查找内存泄漏的工具 优化内存使用量 用C#,VB.NET或任何编写的程序 其他.NET语言。
答案 5 :(得分:5)
我是第二个ANTS profiler。
除了显示您需要的所有内容之外,它还将绘制简单的图形,您可以在其中查看执行时间最长的内容以及内存的内容。当您单击graphp时,它将显示代码中的相应行。
我喜欢在代码行上淹没的litle进度条,执行时间太长。
答案 6 :(得分:4)
我目前正在使用ANTS Profiler。它是一个非常好的工具,具有许多分析详细信息选项,并且可以与独立应用程序,开发服务器和IIS配合使用。
答案 7 :(得分:4)
由于每个人都列出了可用的工具,我想我会指出完整的.NET分析器列表:http://sharptoolbox.com/categories/profilers-debuggers
你会在这里找到所建议的工具和所有其他的工具,每个工具都有一个简短的描述。
答案 8 :(得分:1)
多年来,我使用Aqtime取得了巨大成功。我尝试过ANTS和其他人,但回到了Aqtime,因为我在非托管代码中做了很多开发。