使用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
.............
}
你知道问题出在哪里吗?为什么不进行垃圾收集?
提前非常感谢!
尝试用// searching for needed data
注释该部分并再次运行测试,这可能是因为您无法释放IDisposable的东西(使用using
或直接释放),loadToExchangeTables()
也是如此。