私は.NET 3.5プロジェクトで作業しており、複数のDataTableを持つDataSetとDataTables間の関係を使用します。私は、DataTableを埋めるためにSQLから一定量のレコードを取得し、それらのレコードを処理します。レコードの処理が終了したら、DataSetをクリアして次のレコードセットを取得します。私は、Clear()メソッドがメモリから行をクリアしないことを読んでいます。レコードを取得している間にメモリが増加し続けることなく、DataSetを再利用するにはどうすればよいですか?メモリの問題なしで同じデータセットを再利用
答えて
MSDNにはthe DataSet.Clear
method clears the DataSet of any data by removing all rows in all tables.と記載されています。それはすべてのテーブルと関係をそのまま残しますが、すべての行をクリアします。
どこを読んだのですか?
Microsoftの従業員からの応答を次のリンクで読むと、http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataset/thread/41e1b19a-b5ee-4cf2-ac1e-ff0c9a35b961が表示されます。次のように記述します。DataSet.Clear()およびDataSet.Dispose()は、GCによって行を消去しません。 .Clear()メソッドは、データセット内のすべてのデータテーブル内のすべてのデータ行を削除します。また、.Dispose()メソッドは、DataSet MarshalByValueComonentの基本クラスによって実装されるため、データセットの管理対象リソースを解放しません。 – user31673
これは、行がクリアされていること、メタデータ(テーブル関係などはありません)が良いことを示しています。メタデータがそれぞれ異なる場合は、nullを指定するか、新しいメタデータに割り当てます。 –
- 1. Djangoで同じURLパターンを再利用
- 2. 同じコンフィグレーションで同じNgModuleを再利用
- 3. MySQL接続の再利用の問題
- 4. UItableviewCellセル再利用の問題
- 5. UICollectionView再利用セルの問題
- 6. セル再利用性の問題
- 7. OpenGL:異なるテクスチャで同じテクスチャを再利用する
- 8. C#TCP Socket.Receive問題再利用ソケット
- 9. SSRSの同じレイアウトの2つのデータセットに関する問題
- 10. 再利用可能なメソッドを作成する際の問題
- 11. 異なる豆に同じデータテーブルを再利用するには?
- 12. 異なるコンテンツタイプに同じテンプレートを再利用する
- 13. 再利用されたコンポーネントをすべて再利用しないでコンポーネントを再利用すると同じ状態を共有する
- 14. マルチスレッドソケットアプリケーションで同じfd番号の再利用を避ける
- 15. MySQL:同じSELECT文でユーザ定義の変数を再利用
- 16. 複雑なデータセットを要約して再利用する方法
- 17. どのようにC#でオブジェクトから同じメモリを再利用しますか? (ビットマップ特に)
- 18. UITableViewセルの再利用可能なセルで問題が発生しました
- 19. 再利用可能なセルとアレイの問題
- 20. 同じAJAX呼び出しを再利用
- 21. Web.configは同じセクションまたはフィールドを再利用します
- 22. Javaで変数を再利用する際の問題
- 23. 同じレイアウトでイメージを再利用する
- 24. .NETクラスで同じプロパティを再利用する方法
- 25. angular2:同じページで共通コンポーネントを2回再利用する
- 26. イメージデータURIを同じSVGドキュメントで複数回再利用
- 27. UIPageViewControllerで同じViewControllerを再利用する方法は?
- 28. 反応ルータで同じコンポーネントを2回再利用する
- 29. Javaスイングで同じJPanelを再利用する
- 30. Javaストリーム内で同じ値を再利用
選択基準を変更して、もう一度Fillを呼び出します。テーブルやリレーションシップが変更された場合は、データセットを使いこなすだけで済みます。新しいデータセットを作成し、それを処理関数に渡すだけです。 –
ここで私の心配は記憶についてです。このプロセスは、何時間も実行されている何千ものレコードに作用します。私はメモリが正しく管理されていることを確認する必要があります。 – user31673
しかし、いったんDataRowが参照されなくなると、GCはそれを取り除くべきです.ClearまたはFillはそれを行います。私の早すぎる最適化のように見えますが、あなたの心配が正当化されているかどうかを確認してください。 –