C#winform程序先通过sql语句,查询数据库,一次得到结果,百万条数据量的级别,取得结果的时候还好,内存虽然占用比较多,但程序还能继续运行。然后针对这百万条数据进行算法处理,遍历datatable表,逐条进行处理,处理的过程中,是将每一条数据的某个字段的值取出拼接string字符串,随着程序的不断运行,也就是说系统中一方面这个datatable占据着大量的内存,另一方面这个拼接的string字符串也越来越大,最终报内存溢出的错。我开始的想法是每处理一条,datatable.remove()掉这条数据,但是发现只是remove虽然删掉了数据,但是并不释放内存,想请教各位我这个情况应该如何处理呢?
谢谢了!

解决方案 »

  1.   


    是啊,先把取出的数据放在dataset的一个datatable中
      

  2.   

    一百万个字符组成的string,多数超过内存限制了吧,你用stringbuff看看
      

  3.   

    对这百万条数据进行算法处理,逐条进行处理,处理的过程中,是将每一条数据的某个字段的值取出拼接string字符串.这样都不在数据库中用存储过程、触发器处理吗?在数据库中运算只返回结果。
      

  4.   

    我用了stringBuilder解决了问题,不仅占用内存少,速度还提高了很多
    查了资料发现string和stringBuilder的区别,后者更适用于内容不断变化的情况
      

  5.   

    用 stringBuilder  真能解决问题?