5

我想在.Net 2.0上使用CLR Profiles之类的东西来查看在任何给定时间(ASP.Net工作进程的)哪些对象在堆中占用更多空间。

但是,CLR Profiler 只允许我启动一个应用程序,而不是附加到现有的应用程序。我认为这是因为它也跟踪分配和 GC,但我对此不是很感兴趣。我想要一些东西,它可以对堆的当前状态进行快照,并向我展示那里有什么,每种类型的对象有多少,以及每种对象类型总共使用了多少字节。

有任何想法吗?

4

2 回答 2

9
  • 附加调试器

cdb -p

  • 加载 .net 调试器扩展

.loadby sos mscorwks

  • 以 CLRProfiler 理解的格式转储堆

!TraverseHeap heap.txt

  • 分离调试器

qd

  • 在 clrprofiler 应用程序中加载 heap.txt
于 2008-09-28T16:01:24.020 回答
3

.Net Memory Profiler正是您所需要的。它不是免费的,但有试用版。实际上,我通过试用来发现我们上一个项目的漏洞。一个显着的特点是:

通过收集和比较 .NET 内存的快照轻松识别内存泄漏

我想这就是你要找的。

于 2008-08-29T01:37:05.943 回答