簡體   English   中英

如何在C#中跟蹤內存分配

[英]How to trace memory allocation in C#

是否有任何方法可以跟蹤GC為C#.net中的特定模塊分配,取消分配和檢索的內存量?

我想找出模塊中可能的內存泄漏。 我在生產中偶爾遇到系統內存不足異常。

您應該使用內存探查器來探查內存分配。

我使用了JetBrains dotTrace ,它具有一種很好的模式,可以在不同時間拍攝兩個快照,並顯示在這兩個快照之間分配了哪些對象但未收集哪些對象。 便於查找內存泄漏,您可以在其中分配新實例而不收集它們。

要查看兩個應用程序內存狀態之間的差異,可以標記時間間隔的開始和結束,然后捕獲差異快照,該快照顯示在標記的時間間隔內分配和釋放了多少內存。 可以過濾視圖以僅顯示活動對象,新對象或無效對象,或顯示新對象和無效對象之間的差異。

內存分析器是一個好主意。 你也可以使用它來獲取草圖PerformanceCounters參見MSDN 如果很難在本地復制,則可以在產品環境中收集一些統計信息。

您可以嘗試使用Visual Studio進行.NET內存分配分析。 試試這篇msdn文章,向您展示如何http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio-2012.aspx 在本文的大約1/3中,它顯示了如何運行.NET內存分配分析器。

如前所述,JetBrains以及.NET Memory Profiler已經幫助了我多次。 如果您在WPF中存在內存泄漏問題,則本文中有一些不錯的建議(舊的但很多仍然有效):

http://blogs.msdn.com/b/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM