加载多个XML文件用C#的XmlDocument导致内存泄漏(Loading multiple xm

2019-10-17 17:56发布

我有处理的使用XmlDocument的 XML文件的大数目严重的麻烦。 我们的想法是从约5000的.xml文档中提取(约每20 MB)一定的数据,它被保存在文本格式,然后导入到MySQL数据库。 这个任务应该每天都要做。

我的问题是,每个XML文件的处理后,系统内存没有释放它。 因此,所有的文件都起球了,直到所有的内存被占用,并在应用程序开始运行非常缓慢(一旦硬盘启动帮助系统内存)。

我使用已经创建的源代码,所以这是不可能改变的其他类一样的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
        .............
    }

任何想法可能是什么问题? 为什么垃圾收集不这样做?

非常感谢你提前!

Answer 1:

试评一部分与// searching for needed data和运行测试再次,它可能让你不自由的感觉IDisposable接口(使用的using ,或直接),这同样适用于loadToExchangeTables()



文章来源: Loading multiple xml files with c# XmlDocument leading to memory leakage