concat、StringBuffer、StringBuilderの違いを知っています。私は、メモリを爆発させる可能性のあるStringBuffer.toStringバッキング配列のメモリの問題を認識しています。私は、初期容量に2の累乗を割り当てることで構成されるJDKSunの最適化についても知っています。
しかし、StringBuffer(toString()で使用)を再利用するための最良の方法について、またはStringBufferの再利用が適切であるかどうかについてはまだ疑問に思っています。メモリと速度のパフォーマンスを念頭に置いて、どちらが優れていますか?
public String toString2() {
StringBuffer sb = new StringBuffer(<size>)
... several .append(stuff) ...
sb.trimToSize()
return sb.toString()
}
また
private StringBuffer sb = new StringBuffer(<size>)
public String toString2() {
sb.delete()
sb.setLength(1024)
sb.trimToSize()
... several .append(stuff) ...
return sb.toString()
}
なぜ ?