基本上,我正在读取多个xml文件,从中恢复一些项目,然后从下一个文件恢复,直到所有文件都处理完毕,然后对收集的项目进行处理。
问题是每个文件约为50mb,我一次最多可能要执行70次操作,加上每个循环内存使用量(在Visual Studio的检查器中)会增加约180mb(5个文件约800mb RAM),所以我可能永远没有足够的RAM来处理它,内存超出错误以及所有这些...
我考虑过使用收益率表对每个出现的项目进行处理,但是在进行处理之前,我需要对它们进行排序。
如果有帮助,这里有一些示例代码,尝试将我的文档设置为null,这在SO上的一些答案中可以找到,但没有成功...
class MyClass
{
List<string> sourceFiles // All my XML input files
List<XElement> listItem // items to get from XML files
/...
static void FillListItem()
{
bool found = false;
foreach (var sourceFile in sourceFiles)
{
XDocument xdoc = XDocument.Load(sourceFile);
foreach (var inventory in xdoc.Descendants("INVENTORY"))
{
if (/*Checks if current item is valid*/)
{
try
{
//...
listItems.Add(inventory);
found = true;
}
catch (Exception e)
{
Logs.LogReject(Filenames.rejectInvalid, inventory, e);
continue;
}
}
else Logs.LogReject(Filenames.rejectConfig, inventory);
}
xdoc = null; //doesn't seem to change anything...
if (!found)
Logs.LogInfo("No corresponding field in " + sourceFile);
}
}
}