如果性能是主要考虑因素……讽刺的是,(IMO )用于设置进入缓冲区的文本的Java结构在CPU上花费的时间比alloc/realloc/garbage集合多。 ……那么,可能不是GC,但这取决于要创建和销毁的生成器的数量。
但是,如果简单地将复合字符串“hello world of”6e 9“earthlings .”附加到缓冲区,则整个问题可能变得不重要。
实际上,无论StringBuilder涉及的内容是复杂和冗馀的,而不是简单的String str='Hi ',Java都可能在后台使用生成器。
就我个人而言,我尽量不滥用GC。 因此,假设如果在快速火灾场景中大量使用(例如,创建调试输出消息),可以在其他地方声明,并将其归零以供重用。
class MyLogger {
stringbuilderstrbldr=new stringbuilder (256;
公共日志缓冲(字符串缓冲) {
SRBldr.Setlength(0;
//prependstatuslevel
SRBldr.append(info );
//预成形时间戳
SRBldr.append('gettimestamp ) );
//usermsg
STRBldr.append(: ) msg;
log.write(strbldr.tostring ) );
}
}