c#-TableAdapter.Fill()和#x2B;Dataset.Clear()增加内存

c#-TableAdapter.Fill()和#x2B;Dataset.Clear()增加内存,c#,memory,dataset,C#,Memory,Dataset,我得到了一个带有2个按钮和DataGridView的简单测试应用程序 按钮1:TableAdapter1.填充(数据集1.测试); 按钮2:DataSet1.Clear() 单击按钮1将从数据库加载数据,内存使用从~25mb增加到~100mb。 单击按钮2将删除数据-至少在DataGridView中不再可见该数据 但内存使用量保持在约100mb 这里缺少什么?您没有遗漏任何内容。从数据集中清除并不会将其从实际内存中删除。只删除了引用。这里没有问题。使用一些内存是可以的,程序就是这样做的。您对应用

我得到了一个带有2个按钮和DataGridView的简单测试应用程序

按钮1:TableAdapter1.填充(数据集1.测试); 按钮2:DataSet1.Clear()

单击按钮1将从数据库加载数据,内存使用从~25mb增加到~100mb。 单击按钮2将删除数据-至少在DataGridView中不再可见该数据

但内存使用量保持在约100mb


这里缺少什么?

您没有遗漏任何内容。从数据集中清除并不会将其从实际内存中删除。只删除了引用。

这里没有问题。使用一些内存是可以的,程序就是这样做的。您对应用程序如何/何时释放内存的期望是错误的。当我执行以下操作时:单击按钮1单击按钮2单击按钮1单击。。。等等记忆会一步一步地增加。这不是一个程序真正应该做的。是的,大多数程序都是这样做的。它会稳定下来的。在获得OOM异常之前,这不是问题。需要“清除”哪些元素/实例才能将其从内存中删除?您不能“删除”任何内容。为什么您认为这是必要的?CLR管理内存。您可能可以尝试执行DataSet1=null并执行GC.Collect(),尽管这并不总是可取的。