Datagridview过多的内存使用情况

时间:2012-07-03 20:52:11

标签: winforms memory datagridview

我有一个包含175列和50,000行的未绑定数据网格视图,主要填充双打。根据我的计算,这相当于175 * 50000 * 8字节= 70 MB的内存使用量。但是,任务管理器说网格使用大约1.2 GB的内存 - 一个17倍的开销!任何人都能解释为什么它消耗了这么多内存吗?

关于缩放datagridview(http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx)的msdn文章,我认为我没有做任何明显错误的事情。我不是为单个细胞设置样式或上下文。除了在列级别填充单元格值和设置格式字符串之外,不做任何修改。

我知道虚拟模式或共享行可能会减少内存消耗,但鉴于我的上述计算,我认为不应该这样做。 17倍的开销对我来说听起来不对。

2 个答案:

答案 0 :(得分:2)

请记住,DataGridView的每个单元格都包含一个DataGridViewCell实例,其中包含大约33 properties。它比仅仅double值更具开销。

答案 1 :(得分:1)

您的计算基于包含8个字节的System.Double。底层System.Data.DataTable中每个单元格的值可能有8个字节,但这并不意味着DataGridView中相同数量的数据只有8个字节。

每个单元格都有多个属性 - height,width,borderstyle,bordercolor等。即使这些属性都是默认值,这些默认值也会占用内存。