Winforms Datagridview内存使用过度

Winforms Datagridview内存使用过度,winforms,memory,datagridview,Winforms,Memory,Datagridview,我有一个未绑定的datagridview,有175列和50000行,主要由double填充。根据我的计算,这相当于175*50000*8字节=70MB的内存使用量。然而,TaskManager说网格使用了大约1.2GB的内存,这是17倍的开销!有人能解释为什么它会消耗这么多内存吗 从msdn关于扩展datagridview()的文章中,我认为我没有犯任何明显的错误。我没有为单个单元格设置样式或上下文提示。除了填充单元格值和在列级别设置格式字符串外,没有其他修改 我知道虚拟模式或共享行可能会减少内

我有一个未绑定的datagridview,有175列和50000行,主要由double填充。根据我的计算,这相当于175*50000*8字节=70MB的内存使用量。然而,TaskManager说网格使用了大约1.2GB的内存,这是17倍的开销!有人能解释为什么它会消耗这么多内存吗

从msdn关于扩展datagridview()的文章中,我认为我没有犯任何明显的错误。我没有为单个单元格设置样式或上下文提示。除了填充单元格值和在列级别设置格式字符串外,没有其他修改


我知道虚拟模式或共享行可能会减少内存消耗,但考虑到我上面的计算,我认为没有必要这样做。我觉得17x的开销不太合适。

请记住,DataGridView的每个单元格都有一个实例,其中包含大约。它的开销比一个
双倍的
值要大。

请记住,DataGridView的每个单元格都有一个实例,其中包含大约。它的开销比一个
双精度
值要大。

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


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

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


每个单元格都有多个属性—高度、宽度、borderstyle、bordercolor等。即使这些都是默认值,这些默认值也会消耗内存。

因此,即使我从未绑定切换到绑定,也不会有多大作用,因为单元格仍将具有所有这些属性?虚拟模式可以解决这个问题吗?因此,即使我从未绑定切换到绑定,也不会有太多作用,因为单元格仍然具有所有这些属性?虚拟模式可以解决这个问题吗?