如何解决使用字节包装 ByteBuffer
public class Message extends SelfDescribingMarshallable {
private final Bytes<ByteBuffer> text;
private long timeStamp;
public Message(int bufferSize,long timeStamp) {
this.text = Bytes.elasticHeapByteBuffer(bufferSize);
this.timeStamp = timeStamp;
}
public Bytes<ByteBuffer> getText() {
return text;
}
public void setText(CharSequence text) {
this.text.clear().append(text);
}
public long getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(long timeStamp) {
this.timeStamp = timeStamp;
}
}
我使用这个类从队列中读取和写入。我需要与以以下格式接收此文本的内部库集成:ByteBuffer 和 byte[]。我需要发送具有正确大小且没有内存分配的文本,换句话说,我需要共享文本实例,因为我将此库应用于命令链模式,并且对于我的 poc 而言,低延迟时间很重要。
为了在没有内存分配的情况下提取 byte[],我使用了以下策略:
byte[] textByte = new byte[2048];
ByteBuffer textBuffer = message.getText().underlyingObject();
textBuffer.limit((int) message.getText().readLimit());
textBuffer.position(0);
textBuffer.get(textByte,(int) message.getText().readLimit());
在不分配的情况下检索字节缓冲区也是一种可能,但我现在不是最好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。