現在、javacが文字列連結を検出すると、コードはStringBuilderを使用するように変換されます。たとえば:StringBuilderのは、明示的なサイズではないので文字列連結に必要な回避策
String a = String.valueOf(System.currentTimeMillis());
String b = String.valueOf(System.currentTimeMillis());
String c = String.valueOf(System.currentTimeMillis());
String d = a + b + c + "_IND";
が
String d = new StringBuilder().append(a).append(b).append(c).append("_IND");
のようなものになり、デフォルトのサイズが使用され、多くの場合、デフォルトのサイズが小さすぎると、実行時に呼び出すexpandCapacityになります。
アプリケーションのプロファイリング中に、多くのそのような操作が見られました。さまざまなHashMapのキーを作成し、JSFなどの各要素に固有のキーを作成します。これは余分なメモリ使用量をもたらします。
これを減らす方法はありますか?あなたは大きな 文字列のサイズを解釈し、そのデフォルトの容量としてやや よりも推定サイズであなたのStringBuiderを初期化するために、常にwiseableある のStringBuilderで大きな文字列を挿入しようとしている場合には
currentTimeMillisを追加するだけなので、StringBuilderのサイズの初期の考え方はありませんか?何か_like_ new StringBuilder(System.currentTimeMillis()。toString()。length。3 + 4) –
これは単なる例であり、文字列ビルダーを使用するたびに連結するために使用できます。 –
[容量のサイズはStringBuilderですか?](http://stackoverflow.com/questions/13360229/most-efficient-initial-capacity-size-for-stringbuilder) – Jeremy