2008-08-29 64 views
5

我想在.NET 2.0上使用類似CLR Profiles的東西,以查看在任何給定時間(ASP.Net工作進程的情況)堆中佔用更多空間的對象。CLR Profiler - 附加到現有的進程

但是,CLR Profiler只允許我啓動應用程序,而不是附加到現有的應用程序。我認爲這是因爲它也跟蹤分配和GC,但我對此不是很感興趣。我只想獲取堆的當前狀態的快照,並告訴我有什麼,以及每種對象有多少個對象,以及每個對象類型總共有多少個字節。

任何想法?

回答

3

.Net Memory Profiler正是你所需要的。這不是免費的,但有一個試用版。其實我用這個試驗來發現我們上一個項目的漏洞。一個顯着特點是:

容易被 收集識別內存泄漏和 .NET存儲

比較快照我覺得這是你在找什麼。

0

你看過RedGates .NET Profiler嗎?

自從我使用它以來已經有一段時間了,但我很確定您可以隨時連接到任何CLR流程。

9
  • 附加調試

CDB -p

  • 負載達網絡調試器擴展

.loadby索斯mscorwks

  • 轉儲堆在格式化CLRProfiler理解

!TraverseHeap heap.txt

  • 分離調試

QD

  • 負載在clrprofiler應用heap.txt
1

This article from MSDN討論如何使用免費的CLR分析器來比較堆棧的實例。您說得對,您目前無法將CLR Profiler附加到正在運行的進程中(文章解釋了原因),但是,對於它的價值,聽起來您很快就能做到。