2013-02-21 25 views
1

我在使用XmlDocument處理大量xml文件時遇到了嚴重的麻煩。這個想法是從大約5000個.xml文檔(每個大約20 MB)中提取某些數據,這些數據以文本格式保存,然後導入到MySQL DB中。這項任務應該是每天完成的。使用c#XmlDocument加載多個xml文件導致內存泄漏

我的問題是,處理完每個xml文件後,系統內存不會釋放它。因此,所有文檔都在堆積,直到所有的RAM都被佔用,並且應用程序開始運行非常緩慢(一旦硬盤驅動器開始幫助系統內存)。

我正在使用已經創建的源代碼,所以不可能更改爲其他類如XmlReader等,所以我堅持使用XmlDocument

爲XML負載的函數被調用是這樣的:

foreach (string s in xmlFileNames) 
      { 
       i++; 
       if (mytest.LoadXml(s)) 
        mytest.loadToExchangeTables(); 
      } 

功能如下:

public bool LoadXml(string fileName) 
    { 

     XmlDocument myXml = new XmlDocument(); 
     myXml.Load(fileName); 
     ............. 
     //searching for needed data 
     ............. 
    } 

任何想法可能是什麼問題?爲什麼垃圾收集沒有完成?

非常感謝您提前!

回答

1

試着用// searching for needed data評論該部分並再次運行測試,可能是因爲您沒有免費獲得IDisposable(使用using或直接使用),loadToExchangeTables()也是如此。

+0

非常感謝,Sinatr!你是完全正確的。這是功能中的其他內容。我不應該責怪GC這個問題;) – Ivaylo 2013-02-21 18:43:47