使用c#XmlDocument加载多个xml文件导致内存泄漏

使用c#XmlDocument加载多个xml文件导致内存泄漏,c#,memory-leaks,xmldocument,C#,Memory Leaks,Xmldocument,我在使用XmlDocument处理大量xml文件时遇到了严重问题。其想法是从大约5000个.xml文档(每个文档大约20 MB)中提取特定的数据,这些数据以文本格式保存,然后导入MySQL数据库。这项任务应该每天完成 我的问题是,在处理每个xml文件之后,系统内存没有释放它。因此,所有的文档都会堆积如山,直到所有的RAM都被占用,应用程序开始运行得非常慢(一旦硬盘开始帮助系统内存) 我使用的是已经创建的源代码,因此不可能更改为其他类,如XmlReader等,因此我只能使用XmlDocument

我在使用XmlDocument处理大量xml文件时遇到了严重问题。其想法是从大约5000个.xml文档(每个文档大约20 MB)中提取特定的数据,这些数据以文本格式保存,然后导入MySQL数据库。这项任务应该每天完成

我的问题是,在处理每个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
        .............
    }
函数如下所示:

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
        .............
    }
你知道有什么问题吗?为什么不进行垃圾收集


提前非常感谢

试着用
//搜索所需数据
对该部分进行注释,并再次运行测试,这可能是因为您无法释放IDisposable(使用
或直接使用
释放IDisposable),这同样适用于
loadToExchangeTables()

试着用
//搜索所需数据来注释该部分
并再次运行测试,这可能是因为您不需要释放IDisposable(使用
或直接使用
来释放IDisposable),这同样适用于
loadToExchangeTables()

非常感谢,Sinatr!你完全正确。这是函数中的其他内容。我把这个问题归咎于GC是不对的;)非常感谢,西纳特!你完全正确。这是函数中的其他内容。我把这个问题归咎于GC是不对的;)