0

C# .Net を使用して Windows アプリケーションを開発しています。これは、実際には DBMS にインストールされるプラグインです。このプラグインの目的は、DBMS 内のすべてのレコード (レコードはオブジェクトです) を読み取り、指定された条件に一致して、ローカル ファイル システムに XML ファイルとして転送することです。私の問題は、メモリの使用に関連しています。すべてが正常に機能しています。しかし、レコードを読み取るたびにメモリが占​​有され、一定の制限を超えると、メモリ不足のためにプラグインが機能しなくなります。

私は約 10k-20k のレコード (オブジェクト) を扱っています。C#には、XMLファイルに書き込まれるとすぐに各レコードのメモリをクリアするメモリ関連のメソッドがありますか. clear()、flush()、gc()、および finalize()/ などの基本的なメモリ処理メソッドをすべて試しましたが、役に立ちませんでした。

彼が次のことを考慮してください:

  • レコードはオブジェクトです。これを変更して、他の効率的なデータ構造を使用することはできません。
  • レコードを読み取るたびに、それらを XML に書き込みます。これを何度も繰り返します。
4

1 に答える 1

0

C# はガベージ コレクション言語です。したがって、オブジェクトによって使用されたメモリを再利用するには、そのオブジェクトへのすべての参照が削除されていることを確認して、コレクションの対象となるようにする必要があります。具体的には、これは、オブジェクトに対して必要なことをすべて行った後、オブジェクトへの参照を保持しているデータ構造からオブジェクトを削除する必要があることを意味します。

使用しているデータ構造のタイプについてもう少し具体的に理解できれば、おそらくより具体的な答えが得られるでしょう。

于 2012-08-20T02:06:09.443 に答える