2
A
回答
4
在代碼中沒有辦法有效地做到這一點。追蹤這類泄漏的最好方法是使用像WinDbg這樣的工具。 SOS擴展有幾個命令,這些命令專門用於幫助跟蹤內存泄漏。
波多黎各做了關於這個問題的徹底博客條目:
2
你應該叫GC.WaitForPendingFinalizers
GC.Collect
後,讓垃圾回收清除freachable隊列。由於GC運行在不同的線程中,當GC嘗試完成任何需要完成的對象時,您的應用程序可能已經移動。通過調用GC.WaitForPendingFinalizers
,您將迫使當前線程等待GC完成清理可擴展隊列(需要完成的項目隊列),然後再恢復執行。
然而,這是說,我同意Joel Coehoorn的評論 - 當你獨自一人時,GC的效果最好。
2
除了Windbg,您還可以使用.net分析器。我已經完成了這兩方面的工作 - 配置文件不會告訴你Windbg無法做到的任何事情,但一個好的配置文件更友好一些。
Windbg 除了JaredPar的鏈接外,Tess Ferrandez還提供了一些有關.net使用Windbg的精彩文章。這裏的AA內存泄漏文章:http://blogs.msdn.com/tess/archive/2006/01/23/516139.aspx
探查: 我有很大的運氣與賽特的分析器(我沒有以任何方式,偉大的工具關聯,雖然): http://memprofiler.com/
他們有一些偉大的如何 - 也可以在他們的網站上觀看視頻。
相關問題
- 1. 誰擁有autorelease對象?
- 2. 有沒有一種方法可以用jquery吸引dom泡泡?
- 3. 如何知道誰擁有ReaderWriterLockSlim?
- 4. 有沒有一種方法可以在<img>標籤上擁有@ url.Action
- 5. 有沒有辦法在Groovy中擁有可調用的對象?
- 6. 有沒有一種方法讓Activity知道它啓動的resultCode?
- 7. 我可以擁有一個沒有值的JavaScript對象鍵嗎
- 8. 有沒有辦法知道一個對象的C#方法是否被調用?
- 9. 將可變自引用傳遞給擁有對象的方法
- 10. 有什麼方法可以知道對象的類型?
- 11. 有一種方法可以知道和檢查「誰來自」一個NET/HTTP請求「誰來自」/「來自哪裏」?
- 12. 有沒有一種方法可以輕鬆映射Ruby中的對象?
- 13. 有沒有一種方法可以獲得給定$$ hashKey的DOM對象?
- 14. 有沒有一種方法可以一次使用Sequelize
- 15. 有沒有一種方法可以確保ActiveRecord層次結構中每個記錄的一個對象引用?
- 16. 有沒有一種巧妙的方法來處理這個空對象引用?
- 17. 使用jQuery驗證,有沒有一種方法可以重置表單而不必引用創建的對象?
- 18. 對象有沒有一種方法使用
- 19. 有沒有一種方法可以完全禁用pixman
- 20. 有沒有一種方法可以在tesseract中使用Asterix(*)?
- 21. 有沒有一種方法可以在Linux上使用C++
- 22. 有沒有一種方法可以使用書籤排序gmail?
- 23. 有沒有一種方法可以用Javascript進行驗證?
- 24. 有沒有一種方法可以在Polymer.js中使用Slick-Carousel?
- 25. 有沒有辦法知道我在記憶中擁有哪些對象和多少個對象?
- 26. 有沒有一種方法可以找出Linux中的音頻通道佈局?
- 27. TokuMX對象的翻譯:有沒有一種方法「hasNext」
- 28. 有沒有一種方法來結合在Javascript中的對象
- 29. 有沒有辦法知道誰是「setNeedsDisplay」的發件人?
- 30. 有沒有辦法知道誰下載我的Github存儲庫
你爲什麼叫GC.Collect?不要擔心清理內存,除了內存以外的其他資源,你應該實現IDisposable和Dispose。 – 2009-05-19 13:56:02