Задать вопрос
@themir

Предусмотрен ли в методе ByteBuffer.allocate() кеширование использованных буфферов, или каждый раз создается новый?

В коде очень часто используется ByteBuffer.allocate(), для считывания потока. Пакеты данных приходят 3х размеров: 4, 16, 24 байтов. Других вариантов нет. Я не знаю, как лучше поступить, из соображения экономии ресурсов: каждый раз вызывать ByteBuffer.allocate(size), или завести 3 ByteBuffer нужных размеров, и использовать соотвествующий, каждый раз очищяя его.

Собственно, мой вопрос: предусмотрен ли в методе ByteBuffer.allocate() кеширование использованных буфферов, или каждый раз создается новый? Просто в будущем может придется получать пакеты других размеров, и накладно для каждого из них заводить ByteBuffer.
  • Вопрос задан
  • 2803 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Как вам вообще в голову мысль пришла, что они могут кешироваться? Там же нет метода close(), по которому буфер мог бы вернуться в пул.

Нет там никакого кеширования, и не надо. Как правило такой буфер создаётся один на поток обработки, а не на каждый запрос как у вас. Так что никакого отдельного пула не требуется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
afiskon
@afiskon
Истина где-то в сорсах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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