減少字串的數量
在 Java 中,建立許多不需要的 String 例項太簡單了。這個和其他原因可能會導致你的程式有很多 GC 忙於清理的字串。
你可能在某些方面建立 String 例項:
myString += "foo";
或者更糟糕的是,在迴圈或遞迴中:
for (int i = 0; i < N; i++) {
myString += "foo" + i;
}
問題是每個+
都會建立一個新的 String(通常,因為新的編譯器會優化某些情況)。可以使用 StringBuilder
或 StringBuffer
進行可能的優化:
StringBuffer sb = new StringBuffer(myString);
for (int i = 0; i < N; i++) {
sb.append("foo").append(i);
}
myString = sb.toString();
如果經常構建長字串(例如 SQL),請使用 String 構建 API。
其他需要考慮的事項:
- 減少
replace
,substring
等的使用 - 避免使用
String.toArray()
,特別是在經常訪問的程式碼中。 - 不應生成要過濾的日誌列印(例如,由於日誌級別)(應提前檢查日誌級別)。
- 如有必要,請使用此類庫。
- 如果變數以非共享方式(跨執行緒)使用,StringBuilder 會更好。