0

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

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

我知道虚拟模式或共享行可能会减少内存消耗,但鉴于我上面的计算,我认为没有必要。17x 开销对我来说听起来不合适。

4

2 回答 2

2

请记住,DataGridView 的每个单元格都包含一个DataGridViewCell实例,其中包含大约33 个属性。它的开销不仅仅是一个double值。

于 2012-07-03T20:55:07.107 回答
1

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

每个单元格都有多个属性 - 高度、宽度、边框样式、边框颜色等。即使这些都是默认值,这些默认值也会消耗内存。

于 2012-07-03T20:56:37.977 回答