减少字符串的数量

在 Java 中,创建许多不需要的 String 实例太简单了。这个和其他原因可能会导致你的程序有很多 GC 忙于清理的字符串。

你可能在某些方面创建 String 实例:

myString += "foo";

或者更糟糕的是,在循环或递归中:

for (int i = 0; i < N; i++) {
    myString += "foo" + i;
}

问题是每个+都会创建一个新的 String(通常,因为新的编译器会优化某些情况)。可以使用 StringBuilderStringBuffer 进行可能的优化:

StringBuffer sb = new StringBuffer(myString);
for (int i = 0; i < N; i++) {
    sb.append("foo").append(i);
}
myString = sb.toString();

如果经常构建长字符串(例如 SQL),请使用 String 构建 API。

其他需要考虑的事项:

  • 减少 replacesubstring 等的使用
  • 避免使用 String.toArray(),特别是在经常访问的代码中。
  • 不应生成要过滤的日志打印(例如,由于日志级别)(应提前检查日志级别)。
  • 如有必要,请使用此类库。
  • 如果变量以非共享方式(跨线程)使用,StringBuilder 会更好。