我正在开发一个.NET 3.5项目,并且将使用具有多个DataTables和DataTables之间关系的DataSet。我将从SQL中获取一定数量的记录以填充DataTable,然后处理这些记录。在完成处理记录后,我想清除DataSet并获取下一组记录。我一直在读Clear()方法不会清除内存中的行。我如何重用DataSet而不会导致我的内存在获取记录的整个过程中继续增加?重复使用相同的DataSet而没有内存问题
回答
MSDN指出the DataSet.Clear
method clears the DataSet of any data by removing all rows in all tables.。它将保持所有表格和关系不变,但清除所有行。
你在哪里读过?
如果您在以下链接http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataset/thread/41e1b19a-b5ee-4cf2-ac1e-ff0c9a35b961上阅读了Microsoft员工的回复,您会看到他声明以下内容:DataSet.Clear()和DataSet.Dispose()不会使行由GC清除。 .Clear()方法将删除数据集内每个数据表中的所有数据行。此外,.Dispose()方法由DataSet MarshalByValueComonent的基类实现,因此它不释放数据集的受管资源。 – user31673 2012-04-01 16:46:48
这就是说行被清除,元数据(表格关系等不是),这是很好的,因为它不太可能你想要它们。如果元数据是不同的每个运行然后null或分配给一个新的等 – 2012-04-01 17:01:18
- 1. 具有相同问题但不同答案的重复查询
- 2. MySQL的使用相同的表连接,而不重复
- 3. 重复使用相同的AJAX调用
- 4. 如何在多个内容页面中有相同的用户注释时防止重复的内容问题?
- 5. 重复内容问题 - SEO
- 6. 重复使用UITableViewCell问题
- 7. Drupal:在相同内容类型中重复使用相同的CCK字段
- 8. 重复使用相同的活动
- 9. ASP.NET:重复使用相同的Repeater ItemTemplate
- 10. 使用相同的JavaScript重复HTML
- 11. 问题复制内存时
- 12. 问题有关内存使用
- 13. 如何让Python使所有相同的字符串使用相同的内存?
- 14. 使用eval(raw_input())而不是input()时是否存在相同的安全问题?
- 15. 框架问题。我怎样才能重复使用相同的模板?
- 16. observablecollection内存使用问题
- 17. 使用UIImagePNGRepresentation内存问题
- 18. 重复排列而不分配内存
- 19. 选择的XPath相同的属性,并没有重复
- 20. DataSet到excel问题
- 21. Fancybox3多个链接到相同的画廊没有重复
- 22. BIRT DataSet删除重复项
- 23. 重新加载相机预览之前的Android内存问题
- 24. Google sitemap.xml和重复的内容问题?
- 25. 使用Array.map去除具有相同属性的“重复对象”
- 26. 为什么我没有[anObject release]发生内存泄漏,而self.anObject = nil有问题?
- 27. 重复使用Hibernate的关键问题
- 28. 重复使用UITableViewCell的问题
- 29. DataSet中的MySQL问题
- 30. 重复使用同一个服务器的问题Diskocket
只需更改您的选择标准并再次调用Fill。如果表或关系发生变化,您只需要关注数据集,然后创建一个新数据集并将其传递给处理函数。 – 2012-04-01 15:39:53
我的关注点在于记忆。这个过程将在数千个运行数小时的记录上工作。我需要确保内存管理正确。 – user31673 2012-04-01 15:52:56
但是一旦DataRow不再被引用,GC应该将其清除,Clear或Fill将会这样做。看起来像是对我不成熟的优化,找出你的担忧是否合理,一个简单的POC风格的审判将做到这一点。 – 2012-04-01 16:54:52