減少字串的數量

在 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 會更好。