Я работаю над проектом .NET 3.5 и буду использовать DataSet с несколькими DataTables и отношениями между DataTables. Я буду извлекать определенное количество записей из SQL для заполнения DataTables, а затем обрабатывать эти записи. После того как я закончу обработку записей, я хочу очистить DataSet и получить следующий набор записей. Я читал, что метод Clear() не очищает строки из памяти. Как я могу повторно использовать DataSet, не заставляя мою память продолжать увеличиваться в течение всего срока службы записей?Повторное использование одного и того же 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() удалит все строки данных в каждом datatable внутри набора данных. Кроме того, метод .Dispose() реализуется базовым классом DataSet MarshalByValueComonent, поэтому он не освобождает управляемые ресурсы набора данных. – user31673
Это говорит, что строки очищаются, метаданные (отношения таблиц и т. Д.), Что хорошо, потому что маловероятно, что вы хотите, чтобы они были. Если метаданные были разными, каждый пробег, то null или назначить его новому и т. Д. –
- 1. Повторное использование/перезапуск сеанса проверки одного и того же узла
- 2. ASP.NET: Повторное использование одного и того же ретранслятора ItemTemplate
- 3. Повторное использование того же UITableViewController
- 4. Совместимость: совместное использование одного и того же пространства памяти
- 5. Повторное подключение TIdTCPServer для одного и того же пользователя входа
- 6. Повторное использование одного и того же идентификатора и использование другого имени класса
- 7. Повторное использование того же всплывающего окна
- 8. повторное запуск одного и того же события индекса табуляции
- 9. Drupal: повторное использование одного и того же поля CCK в том же типе содержимого
- 10. Можно использовать несколько WKWebViews так же быстро, как повторное использование одного и того же WebView
- 11. C# - Использование нескольких DataTables одного и того же имени и пространства имен в DataSet
- 12. Повторное использование одной и той же переменной
- 13. Повторное использование одного и того же кода AdMob в других приложениях
- 14. Повторное использование значения свойства как переменной внутри одного и того же объекта
- 15. Правильный способ сделать это? Повторное использование одного и того же вида просмотра и просмотра контроллера
- 16. Повторное использование одного и того же сокета для отправки и получения (Python)
- 17. Объявление переменных одного и того же типа и их повторное использование
- 18. Использование одного и того же объекта memeoy GPU
- 19. Повторное использование CSR для нескольких сертификатов для нескольких вариантов одного и того же приложения
- 20. node.js - использование одного и того же имени переменной при закрытии?
- 21. Использование нескольких экземпляров одного и того же плагина
- 22. Повторное использование одного объекта вместо того, чтобы создавать новые
- 23. CSS - повторное использование одного и того же изображения выполняется как два отдельных изображения
- 24. Повторное использование одного и того же javascript с немного отличающимся приложением
- 25. Повторное использование одного и того же кода html/css через JQuery
- 26. Повторное использование одного и того же имени набора несколько раз в Gams
- 27. Повторное использование/переписывание одного и того же имени переменной для mysqli_query?
- 28. Повторное использование одного и того же экземпляра предиката в запросе критериев дает неправильный результат
- 29. Selenium webdriver в python: повторное использование одного и того же веб-браузера в тестовых окнах
- 30. Повторное использование одного и того же ImageView несколько раз в одной сцене на JavaFX
Просто измените критерии выбора и снова вызовите Fill. Вам нужно только обходиться с набором данных, если таблицы или отношения меняются, а затем вы просто создаете новый набор данных и передаете это своим функциям обработки. –
Моя забота здесь о памяти. Этот процесс будет работать на многих тысячах записей, работающих в течение многих часов. Мне нужно убедиться, что память управляется правильно. – user31673
Но как только DataRow больше не ссылается, GC должен избавиться от него, Clear или Fill сделают это. Похоже на преждевременную оптимизацию для меня, выясните, оправдана ли ваша озабоченность, простое испытание POC Style сделает это. –