用BinaryFormatter 序列化一个Dataset对象时,遇到Out Of Memory的错误,这个Dataset包含的数据表记录数小于1W行时
不报错,当大于1W行时,报这个错误。
我测试了下Dataset占用的内存是110M,但是机器的内存有3G,还有近2G空余内存。
请高手帮忙看看如何解决这个问题,多谢了!环境: Windows Server 2003,VS2005, .NET 2.0 
测试代码:
...
TestChart.SqlClass sqlHelper = new TestChart.SqlClass();string strSql = "exec TestBigDataSetForC1Grid";DataSet dsview = sqlHelper.RunSql(strSql, "Master");object t = dsview as object;
if (t == null) throw new ArgumentNullException("obj");
           
MemoryStream resultStream = new MemoryStream();BinaryFormatter bf = new BinaryFormatter();bf.Serialize(resultStream, dsview); //报Out Of Memory的错误

解决方案 »

  1.   

    序列化这么大对象干嘛?
    多占资源,你自己用DataSet的WriteXML方法保存xml文件,然后传到服务器,服务器再new个DataSet读取这个xml文件(ReadXML方法)不行吗?
      

  2.   

    这么大的数据用XML死得更快,看一下你处理流那的问题
      

  3.   

    经查资料得知,在.NET 2.0 下的BinaryFormatter类,当数据量大时,这个OutOfMemory的异常无法避免,后改用分页来处理。