<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近看服务器运行的时候,发现CPU使用load特别高,排查了一下,问题出现在下面的代码里面</span>
StringBuilder buf = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
if (StringUtils.isNotEmpty(buf.toString())) {
buf.append("\r\n");
}
buf.append(line);
}
dump服务器stack的时候,发现代码经常停留在 if (StringUtils.isNotEmpty(buf.toString())) 这一行
这是为什么呢?
StringUtils.isNotEmpty是公共方法,应该没什么大问题。
问题就处在buf.toString()上面
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}
每次toString的时候会新建一个String对象