chenxu created KAFKA-9149:
-----------------------------
Summary: Avoid temp byte array creation when use
ByteBufferSerializer
Key: KAFKA-9149
URL: https://issues.apache.org/jira/browse/KAFKA-9149
Project: Kafka
Issue Type: Improvement
Components: clients
Reporter: chenxu
Code in ByteBufferSerializer#serialize like this
{code:java}
public byte[] serialize(String topic, ByteBuffer data) {
if (data == null)
return null;
data.rewind();
if (data.hasArray()) {
byte[] arr = data.array();
if (data.arrayOffset() == 0 && arr.length == data.remaining()) {
return arr;
}
}
byte[] ret = new byte[data.remaining()];
data.get(ret, 0, ret.length);
data.rewind();
return ret;
}
{code}
Temp byte array will be created when use with DirectByteBuffer, how about
declare a method such as serialize2Buffer and return the ByteBuffer directly ?
This can improve GC a lot in KafkaProducer.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)