是否有任何工具可用於剖析.Net線程爭用。我已經爲運行緩慢的Windows服務的線程添加了性能計數器。它顯示了大約150個線程爭用。我想要描述代碼的哪些部分對於如此多的線程爭用負責。有沒有可用的工具可以將我指向正確的代碼塊。剖析.Net線程爭用
6
A
回答
2
0
不是一個分析器,但windbg與sosex.dll擴展名可以告訴你你有什麼僵局。找到它here並閱讀!dlk命令。
2
我遇到了與Visual Studio 2008項目相同的問題,所以我無法使用VS2010的線程爭用分析器。相反,我寫了一個診斷類,TimedMonitor,跟蹤等待鎖定的時間。
要使用它,你將取代:
object myLock = new object();
lock (myLock) { /* do work */ }
有:
TimedMonitor timedLock = new TimedMonitor();
using (timedLock.Lock()) { /* do work */ }
Console.WriteLine("Lock was entered {0} times; total wait time: {1}.",
timedLock.EnterCount, timedLock.WaitTime);
如果你只使用少量簡單的鎖(即,與Monitor.Enter或鎖關鍵字),用TimedMonitor替換它們並記錄輸出可能有助於確定哪個鎖負責大部分時間等待。但是,如果您使用更復雜的託管鎖(例如ReaderWriterLock)或本地同步(例如,ManualResetEvent),它將不會有幫助,因爲它不會跟蹤這些鎖。
相關問題
- 1. 剖析.net庫
- 2. Python線程的剖析
- 3. 剖析PHP在線
- 4. 分析和剖析多線程應用程序
- 5. 分析線程同步鎖爭用
- 6. 剖析Chrome應用程序
- 7. JProfiler - 應用程序剖析
- 8. 用於剖析.NET Compact Framework應用程序性能的工具
- 9. 如何剖析.NET應用程序的網絡利用率
- 10. 剖析/優化大量多線程應用程序
- 11. 剖析
- 12. 如何用Tufte剖析多線程clojure結果
- 13. 編程語言剖析器
- 14. Java中的線程爭用
- 15. 多線程資源爭用
- 16. 使用NVIDIA可視化剖析器剖析MATLAB mex CUDA應用程序
- 17. 剖析多線程和多處理器程序
- 18. Python線剖析器結果不一致
- 19. 剖析調用並行外部程序
- 20. ASP.NET MVC應用程序剖析
- 21. Grails應用程序剖析器
- 22. 剖析Mule ESB應用程序
- 23. 剖析Java Web應用程序
- 24. 流星應用程序剖析數據
- 25. 剖析Web應用程序請求
- 26. 剖析java Google App Engine應用程序
- 27. 剖析R中
- 28. Python剖析
- 29. ngen和剖析
- 30. EProf Erlang剖析
是的我正在尋找類似的東西。但不幸的是我在VS.Net 2005 – Amitabh 2010-02-08 16:28:30
@Amitabh:你可以在這裏下載VS2010:http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx – 2010-02-08 16:40:23
VS2010可以以.NET 2.0爲目標。您只需升級項目文件(.csproj,.vbproj)和解決方案(.sln)。沒有代碼遷移是必要的。我不確定你是否可以在.NET 2.0項目中使用profiler,但是我猜這是值得的。 – 2010-02-15 21:03:12