1

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

我的问题是处理每个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
        .............
    }

任何想法可能是什么问题?为什么垃圾收集没有完成?

非常感谢您!

4

1 回答 1

1

尝试评论该部分// searching for needed data并再次运行测试,这可能是因为您不会释放 IDisposable 的东西(使用using或直接),同样适用于loadToExchangeTables().

于 2013-02-21T12:47:04.740 回答