在使用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置空
...
}
循环三次,问题解决