【发布时间】:2014-06-17 03:43:53
【问题描述】:
假设我必须创建和编写大量 protobuf 消息,其中包含字符串字段(每条消息都不同)。我创建了一个 protobuf.Builder 并重用它来创建所有消息、设置此字符串字段并调用方法 build()。我有字节作为输入,例如对于每条消息,我都有字节 [],它应该设置为字符串字段。所以问题是 - 如何在没有新内存分配的情况下将 byte[] 设置为构建器的字符串字段?
据我了解,在java中使用protobuf builder时,有两种方法可以设置字符串字段:
- 设置(字符串字段)
- 设置(字节字符串字段)
第一个需要从 byte[] 创建一个新的对象 String,这就是为什么要分配新的内存。 第二种需要使用 ByteString 的一些方法,例如 ByteString.copyFrom(byte[]),但是这种方法(与 ByteString 的所有其他类似方法一样)不使用现有的字节数组,而是创建一个新的。 那么,有什么解决方法吗?
【问题讨论】:
标签: java string memory-management protocol-buffers