2010-12-17 75 views
4

問題:什麼是有應用程序生命週期中創建的所有對象出生/死亡/內存使用的全面視圖的最佳方式? (圖文報告會更好).NET:監控對象壽命(出生/死亡/內存)

爲什麼這樣一個問題: 其中許多人一樣,背後的想法,就是要揭示可能永遠不會被垃圾收集器收集長期生活的對象或導致內存故障(如作爲堆棧/堆棧問題等),並提供有價值的信息來有效管理對象生命週期

(其實我只是花了整夜的時間調試一個多線程應用程序,最後注意到「相信是處置/更新」的對象實際上是事實上仍然活着並砸碎服務器內存。)

VS2010 Performance Wizard &探查可能是一個很好的入門... 我偶然發現幾個方法可以做到這一點編程,但它涉及的個別結束了對象(苦心,而不是代碼無縫)

我正在尋找的東西,應該是這樣的:

Application START[-----------------------------------------------------------]END 
Object 1    [---------------------------] 
Object 2       [---------------------------] 
Object 3   [-----------------------------------------------------] 

回答

2

米卡,

正如你指出,你可以使用VS2010探查器(如果您的Visual Studio高級版或旗艦)。有關更多信息,請參閱MSDN關於收集「對象生命週期」信息的頁面。

請注意,與其他性能分析模式相比,此性能分析模式相當重量級,並且您可能會發現收集的VSP文件非常大,除非您有相當集中的性能分析。

分析報告將以表格形式顯示信息,但您可以將數據複製到Excel或您選擇的其他程序中以進一步分析/製圖。

聲明:我使用Visual Studio分析器。

+0

哈!我錯過了「還收集.NET對象生命週期信息」複選框!非常好的工具確實。希望十年前我擁有了它,可以避免一堆夜晚盯着陰鬱無盡的日誌文件。 THANX – 2010-12-17 17:42:23

1

有一些工具可以做到這一點,但不像圖那麼容易。你需要學習一些這些工具。

免費: CLR探查 http://msdn.microsoft.com/en-us/library/ff650691.aspx

的WinDbg: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

使用SOS或SOSEX擴展使用WinDbg剖析.NET代碼。

商業: 紅門螞蟻探查: http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

+0

我昨天給了CLR Profiler一個試用版,但在我看來,它並不足以直接使用。至於紅門,聽起來更像一個火箭筒,關於我期望的簡單用法。此外,它不知道它確實滿足了我所需要的幾十個蓬勃發展的功能。 – 2010-12-17 17:36:53