【问题标题】:Loading multiple xml files with c# XmlDocument leading to memory leakage使用 c# XmlDocument 加载多个 xml 文件导致内存泄漏
【发布时间】:2013-02-21 12:36:00
【问题描述】:

我在使用 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
        .............
    }

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

非常感谢您!

【问题讨论】:

    标签: c# memory-leaks xmldocument


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,Sinatr!你是完全正确的。它是函数中的其他内容。我不应该把这个问题归咎于 GC ;)
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2017-02-20
    • 2019-10-21
    • 2016-03-14
    • 1970-01-01
    • 2013-09-07
    • 2017-04-20
    相关资源
    最近更新 更多