StringBuilder 内存溢出?
我在进行数据库方面的采集,提取的数据保存在StringBuilder中,有3个StringBuilder,分别是Update(保存更新数据)、Add(保存添加数据)、Delete(保存删除数据)。
当数据量巨大的时候(比如我连续删除了4W条记录),那么Delete里就保存了4W条记录,此时如果我直接把Delete输入到文本保存,是可以的(大约60M)。但是由于我需要对格式进行整理,对字符串头和尾添加一些包装信息,所以我把Update、Add和Delete放入一个新的StringBuilder Result内,格式如下:
Result.AppendFormat("<头部信息>{0}{1}{2}</尾部信息>",Update,Add,Delete);
此时程序就会抛出异常,报告内存溢出。而且即使我单独对Delete进行格式化,Delete.AppendFormat("<头部信息>{0}</尾部信息>",Delete);也同样溢出,只有进行插入操作Delete.Insert(0,"<头部信息>"); Delete.Insert(Delete.Length-1,"</尾部信息>");才可以
请问这是怎么回事?如何解决,谢谢!
当数据量巨大的时候(比如我连续删除了4W条记录),那么Delete里就保存了4W条记录,此时如果我直接把Delete输入到文本保存,是可以的(大约60M)。但是由于我需要对格式进行整理,对字符串头和尾添加一些包装信息,所以我把Update、Add和Delete放入一个新的StringBuilder Result内,格式如下:
Result.AppendFormat("<头部信息>{0}{1}{2}</尾部信息>",Update,Add,Delete);
此时程序就会抛出异常,报告内存溢出。而且即使我单独对Delete进行格式化,Delete.AppendFormat("<头部信息>{0}</尾部信息>",Delete);也同样溢出,只有进行插入操作Delete.Insert(0,"<头部信息>"); Delete.Insert(Delete.Length-1,"</尾部信息>");才可以
请问这是怎么回事?如何解决,谢谢!
...全文
相关推荐
Android-笔试题目.docx
Android笔试题目,供初学者参考
Android内存研究
收集整理的一些关于Android/JAVA内存相关的资料。如果Java不好好使用,会出大事的哦~
值得收藏的2017年Java开发岗位面试题
主要为大家推荐一份值得收藏的2017年Java开发岗位面试题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
JAVA后端开发面试题
JAVA后端开发面试题,适合Java开发岗位面试者
String,StringBuffer,StringBuilder区别
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的


