1

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
        .............
    }

何が問題になるのか、何か考えはありますか?そして、なぜガベージコレクションが行われないのですか?

事前にどうもありがとうございました!

4

1 に答える 1

1

その部分にコメントを付けて、もう一度テストを実行してみてください。IDisposableを(または直接// searching for needed data使用して)解放しないようにするためです。同じことが。にも当てはまります。usingloadToExchangeTables()

于 2013-02-21T12:47:04.740 に答える