簡體   English   中英

.NET中是否存在內存泄漏? 如果是,那里最好的工具是什么?

[英]Can there be memory leaks in .NET? If yes, what are the best tool out there?

我正在使用C#4.0托管代碼應用程序。 我正在使用不符合CLS的外部DLL。

我是否需要一個內存泄漏檢測工具來檢查DLL中的內存泄漏? 如果是,那有什么最好的工具?

即使在托管代碼中,也可能會發生內存泄漏。 但是,除非您真正找到了內存泄漏,否則我不會深入研究內存泄漏。

如果確實需要檢查泄漏,那么我建議使用ANTS Profiler ,但這有其局限性,因此應視具體情況而定。

是的,.NET中可能存在內存泄漏。 當您只使用基類庫時,甚至有可能擁有它們,因為其中許多類本身都對非托管代碼進行了調用。

我曾經有一次內存泄漏,因為我沒有在枚舉它后釋放System.DirectoryServices.SearchResultCollection。

但是,我不知道可以使用哪些泄漏檢測工具。

您可以使用諸如CLR Profiler,VSTS Profiler, .NET Memory Profiler或CLR Profiler之類的工具來檢查對象大小等,因為他們說您可以在任何.NET程序中查找內存泄漏並優化內存使用率。

您可以使用免費的WinDbg,SOS和GCRoot來診斷內存泄漏。 戴維安森(David Anson)向您展示了如何在此博客文章上 Rico Mariani在使用WinDbg和SOS方面也有一篇不錯的博客文章

其他產品,例如JustTracedotTraceANTS Profiler可以幫助您診斷這類問題。

暫無
暫無

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

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