Ну, начало trimToSize
Javadoc говорит
Попытки для уменьшения памяти, используемой для последовательности символов. Если размер буфера больше необходимого для хранения текущей последовательности символов, его размер может быть изменен , чтобы сделать его более эффективным
Это не требует уменьшения хранилища, и, возможно, будет невозможно уменьшить хранилище (и даже если возможно уменьшить хранилище, реализация может решить, что было бы более выгодно не уменьшить хранилище). Если объем хранилища уменьшается, результат, возвращаемый при последующем вызове capacity()
, изменится.
Тем не менее, реализация, которую я вижу в AbstractStringBuilder
, всегда уменьшает объем памяти, когда это возможно (т. Е. Когда заняты не все символы резервного массива):
public void trimToSize() {
if (count < value.length) {
value = Arrays.copyOf(value, count);
}
}