c# - 大型数据集的内存消耗

标签 c# dataset trace out-of-memory

我有一个 .net winform c# 程序。 我使用我自己的跟踪系统收集我的程序的跟踪。跟踪显示有关用户做了什么的信息和其他有用的信息。 我将每条轨迹存储在数据集中。举个例子,我每秒在数据集中添加一行。 程序仅在程序遇到未处理程序异常或程序关闭时才处理痕迹。

问题是:数据集在内存中开始变得非常大,如果程序运行足够的时间,就会出现内存不足的异常。

我在网上搜索并找到了一些想法。 - 将数据集放在硬盘上的文件中(在这种情况下,每次我想添加跟踪时我都必须打开一个大文件) - 分页数据集

我必须找到一种方法来释放该数据集所使用的内存,方法是保留它包含的所有信息,并且还要设法向该数据集添加额外的行。

有人有想法或指导吗?谢谢

最佳答案

您可以将数据集的内容保存到磁盘(每小时在其自己的文件中)、清除内存中的数据、在内存中运行一个小时、将数据保存到单独的文件中等等。

这样你的内存消耗应该没问题,你的性能每小时只会受到一次影响。

由于磁盘上的文件都具有相同的结构,只要您需要“完整数据”,就可以合并它们。

虽然我会推荐使用一些现有的日志库 - 有很多经过良好测试的库(免费和商业)。

关于c# - 大型数据集的内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218767/

相关文章:

c# - GridView重叠效果

c# - 在 DataRow 中设置特定列

c++ - 如何在 MFC 中重定向 TRACE 语句以减少来自 AfxDumpStack() 的数据流?

c# - ASP.NET 页面跟踪结果

c# - 函数Int32.TryParse(“23.0”)返回false-C#MVC4

c# - Thread.SetAffinity 和 Threading via XNA 在 Xbox 360 上的问题

c# - 如何在 .net 中为网络适配器设置 dns 搜索后缀?

asp.net - 组织数据集设计器的工具?

MySqlDataAdapter.update() 不使用 DataRelation 更新 DataRow

java - 如何在visualvm中启用跟踪分析?