0

175列と50,000行のバインドされていないデータグリッドビューがあり、主にdoubleが入力されています。私の計算によると、これは175 * 50000*8バイト=70MBのメモリ使用量に相当します。ただし、タスクマネージャーによると、グリッドは約1.2GBのメモリを使用しています。これは17倍のオーバーヘッドです。なぜそれがそんなに多くのメモリを消費しているのか誰かが説明できますか?

datagridviewのスケーリングに関するmsdnの記事(http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx)から、私はひどく間違ったことをしているとは思いません。個々のセルにスタイルやコンテキストメニューストリップを設定していません。セル値の入力と列レベルでのフォーマット文字列の設定以外の変更はありません。

仮想モードまたは共有行によってメモリ消費量が減少する可能性があることは理解していますが、上記の計算を考慮すると、それは必要ないと思います。17倍のオーバーヘッドは私には正しく聞こえません。

4

2 に答える 2

2

DataGridViewの各セルは、約33個のプロパティを含むDataGridViewCellインスタンスを保持していることに注意してください。単なる値よりもオーバーヘッドが大きくなります。double

于 2012-07-03T20:55:07.107 に答える
1

計算は、8バイトを含むSystem.Doubleに基づいています。基になるSystem.Data.DataTableの各セルの値に8バイトが含まれる場合がありますが、これは、DataGridViewの同じ量のデータがわずか8バイトであることを意味するものではありません。

すべてのセルには、高さ、幅、borderstyle、bordercolorなどの複数のプロパティがあります。これらすべてがデフォルト値であっても、これらのデフォルト値はメモリを消費します。

于 2012-07-03T20:56:37.977 に答える