-2
我的應用程序中有輕微的內存泄漏,我想知道什麼是當我完成處理FileStream和Streamreader時的最佳做法。我應該調用Dispose後,我的文件流完成
這裏是我的代碼:
using (var stream = File.Open(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(stream))
{
//do what I need with the file
sr.Close();
stream.Close();
}
我應該流對象和StreamReader對象而不是在被稱爲處置?或者在這裏關閉這兩個足夠好?
感謝
您確定內存泄漏出現在您發佈的代碼中,您是否使用Visual Studio分析工具完成分析?,當您使用using語句時,不需要顯式調用Dispose和Close方法,請檢查此發佈有關它http://stackoverflow.com/questions/11968289/memorystream-in-using-statement-do-i-need-to-call-close –
我原本以爲我的內存泄漏是由FileSystemWatcher,這顯然有一個.Net 4中的內存泄漏問題。我升級到4.5,但內存泄漏仍然發生。這真的是我的應用程序的唯一其他部分。 –
Andrew Burns,請嘗試在Visual Studio中運行內存診斷以查找發生內存泄漏的代碼的確切行,請檢查這些鏈接https://blogs.msdn.microsoft.com/visualstudioalm/2014/04/02/diagnosing -memory-usage-the-new-memory-usage-tool-in-visual-studio/ https://www.youtube.com/watch?v=lU_YZtvslnI https://dzone.com/物品/分析的應用程序可視-1 –