DataSet怎么这么占内存?

xing83 2007-08-25 07:47:32
写了这样一段代码
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里存了什么信息让它占用内存几乎大到三倍呢。
...全文
368 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhengjun555 2007-08-25
  • 打赏
  • 举报
回复
还需要很多额外的XML标记来框定表格、行和列。此外还有一些额外的属性。自然会比纯粹的数据占用空间大很多。
AllenCpp 2007-08-25
  • 打赏
  • 举报
回复
dataset是把整个表保存在内存,当很大的数据表载入内存是使用dataset是一个问题,如果有多个用户访问同一台计算机,就会导致严重内存消耗
对大量的数据建议用DataReader,
JustLovePro 2007-08-25
  • 打赏
  • 举报
回复
really??
study~`
yucong 2007-08-25
  • 打赏
  • 举报
回复
关注
rodneygg 2007-08-25
  • 打赏
  • 举报
回复
别用dataset 还是直接用datatable比较好
xing83 2007-08-25
  • 打赏
  • 举报
回复
刚才又试了下,还是一样的结果,晕。
vs打开,程序运行后 PF使用率 700M(开了很多浏览器窗口和word...)
点按钮建立dataset,PF使用率会奔到900M左右。

如果是建立数组double[9,10000000],只会占到77xM

回家试试看struct数组是不是也和dataset一样很费内存。

xing83 2007-08-25
  • 打赏
  • 举报
回复
to楼上:

我是把上面这段代码放在按钮事件当中
在vs中运行这个程序,然后看pf使用是600m
然后点下这个按钮就飙升到800m了

如果建立一个Double [,] arr2=new Double[9,1000000];就占用671m内存,和理论值是差不多的
lqwxfdwj 2007-08-25
  • 打赏
  • 举报
回复
很可能不是DataSet的事情。
其实这个开发工具本身就占很大的内存
yan53125 2007-08-25
  • 打赏
  • 举报
回复
关注..
dongwei2345 2007-08-25
  • 打赏
  • 举报
回复
不可能
楼主应该看错了或者哪里卡了
xing83 2007-08-25
  • 打赏
  • 举报
回复
如果是想读取大量数据到内存处理,貌似可以用建立struct数组的方式解决。
那dataset优势在什么地方呢?只是和xml有关的应用?

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧