В каких случаях метод trimToSize () не влияет на значение, возвращаемое методомacity () класса StringBuffer в Java?

Создайте 3 группы потоков с 25 потоками.

В плане тестирования установите флажок «Запустить группы потоков последовательно». Таким образом, вы уверены, что следующий будет выполняться после завершения первого.

1
задан my name is GYAN 20 January 2019 в 08:07
поделиться

1 ответ

Ну, в начале trimToSize Javadoc говорится

Попытки уменьшить объем памяти, используемый для последовательности символов. Если размер буфера больше необходимого для хранения текущей последовательности символов, его размер можно изменить , чтобы он стал более компактным

. уменьшается, и может оказаться невозможным уменьшить объем хранилища (и даже если есть возможность уменьшить объем хранилища, реализация может решить, что было бы более выгодно не уменьшать объем хранилища). Если объем хранилища уменьшается, результат, возвращаемый при последующем обращении к capacity(), изменится.

Тем не менее, реализация, которую я вижу в AbstractStringBuilder, всегда уменьшает объем памяти, когда это возможно (то есть, когда заняты не все символы резервного массива):

public void trimToSize() {
    if (count < value.length) {
        value = Arrays.copyOf(value, count);
    }
}
0
ответ дан Eran 20 January 2019 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: