XmlDocumentを使用して多数のxmlファイルを処理する際に深刻な問題が発生しています。アイデアは、約5000の.xmlドキュメント(それぞれ約20 MB)から特定のデータを抽出し、それをテキスト形式で保存してからMySQLDBにインポートすることです。このタスクは毎日実行されることになっています。
私の問題は、各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
.............
}
何が問題になるのか、何か考えはありますか?そして、なぜガベージコレクションが行われないのですか?
事前にどうもありがとうございました!