DataSet怎么这么占内存?
写了这样一段代码
DataSet ds=new DataSet();
DataTable dt = ds.Tables.Add( "dt ");
dt.Columns.Add( "c1 ",typeof(Double));
dt.Columns.Add( "c2 ", typeof(Double));
dt.Columns.Add( "c3 ", typeof(Double));
dt.Columns.Add( "c4 ", typeof(Double));
dt.Columns.Add( "c5 ", typeof(Double));
dt.Columns.Add( "c6 ", typeof(Double));
dt.Columns.Add( "c7 ", typeof(Double));
dt.Columns.Add( "c8 ", typeof(Double));
dt.Columns.Add( "c9 ", typeof(Double));
for (int i = 1; i < 1000000;i++ )
{
DataRow dr = dt.NewRow();
ds.Tables[ "dt "].Rows.Add(dr);
}
然后打开任务管理器看占用内存。发现这段代码运行后占用了200M内存。不明白了,每个double 8个字节,每个row应该是72字节,用数组的话总共占用72M内存就足够了吧?dataset里存了什么信息让它占用内存几乎大到三倍呢。
------解决方案--------------------dataset是把整个表保存在内存,当很大的数据表载入内存是使用dataset是一个问题,如果有多个用户访问同一台计算机,就会导致严重内存消耗
对大量的数据建议用DataReader,
------解决方案--------------------还需要很多额外的XML标记来框定表格、行和列。此外还有一些额外的属性。自然会比纯粹的数据占用空间大很多。