StringBuilder问题

来源:互联网 发布:大数据 翻译 mass data 编辑:程序博客网 时间:2024/06/03 23:39
在使用append方法时,用到StringBuilder,遇到了下面问题:

这里写图片描述

  • 从打印结果来看,问题很严重!!! size是递增的。
贴代码:

这里写图片描述
这里将StringBuilder放在了方法体外面,也就是sql是一个全局变量。


原因:

将sql定义为全局变量,如果在循环里面调用上图中的方法时,就意味着每执行一次循环,就会创建一个StringBuilder对象,如果内部缓冲区溢出,则此容量自动增大,而StringBuilder没有得到释放,造成上面的问题。

解决方法:

1.将sql定义为局部变量,避免全局。这样每次调用不会出现缓冲区溢出问题。

2.在调用时,类似:

    StringBuffer sql = null;    while(it.hasNext()){        ...        sql = su.InsertSQL("tableName", obj);        sql.replace(0,sql.length(),"");   //将sql置空        ...    }

循环三次,问题解决
这里写图片描述

0 0
原创粉丝点击