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