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

本文关键字:内存 泄漏 文件 xml c#XmlDocument 加载 使用 | 更新日期: 2023-09-27 18:00:20

使用XmlDocument处理大量xml文件时遇到严重问题。这个想法是从大约5000.xml文档(每个文档大约20MB)中提取特定的数据,这些数据以文本格式保存,然后导入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
        .............
    }

你知道问题出在哪里吗?为什么不进行垃圾收集?

提前非常感谢!

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

尝试用// searching for needed data注释该部分并再次运行测试,这可能是因为您无法释放IDisposable的东西(使用using或直接释放),loadToExchangeTables()也是如此。