2012-05-30 6 views
1

Предоставляет ли Netty какой-либо способ избежать копирования буфера, когда я пишу объекты в сеть? В моем Channel.write(Object), в моем понимании, этот объект предназначен для прохождения через кодеры (которые возвращают копии ChannelBuffer). Это в основном означает, что для каждого сообщения я создаю буферную копию, в конечном итоге создавая большое количество короткоживущих буферных объектов.эффективный способ записи с использованием Netty

Может Netty предоставить мне многоразовый ChannelBuffer, который я заполняю байтами, и он записывает эти байты в сеть напрямую?

ответ

0

Netty уже перерабатывает буферы, вам не нужно заботиться об этом.

Кроме того, кодеры/декодеры только те, которые вы написали сами, Нетти может обрабатывать только ChannelBuffer объекты, если вы пишете ChannelBuffer на канал нет никакой магии вокруг него, это содержимое записывается непосредственно в вывод.

Что вы можете (и должны) делать, это создавать буферы точного размера, необходимые для того, чтобы избежать размещения динамических буферов при загрузке буфера с данными.

+0

что вы подразумеваете под «Netty уже перерабатывает буферы»? ChannelBuffers.buffer() будет создавать новый буфер каждый раз - только gc будет их перерабатывать? – Bhaskar

+0

Упс, мой плохой, он еще не реализован - https://github.com/netty/netty/issues/62 –

Смежные вопросы