Java 在内存中存储字节数组的最佳方式是什么

Java 在内存中存储字节数组的最佳方式是什么,java,arrays,bytebuffer,Java,Arrays,Bytebuffer,在我的服务器事务中的某个地方,我从某个后端作业接收到一个表示pdf文档的字节数组。 稍后在事务中,需要将pdf写入客户端。 但目前我有那个字节数组,我想将它存储在内存中,直到需要将pdf文件写入客户端。 处理字节数组的最佳方法是什么? 创建一个modelobject并将字节数组作为普通字节数组保留在那里? 例如: public class PdfDocument { private byte[] bytearray; private String pdftitle; } 或者,

在我的服务器事务中的某个地方,我从某个后端作业接收到一个表示pdf文档的字节数组。
稍后在事务中,需要将pdf写入客户端。 但目前我有那个字节数组,我想将它存储在内存中,直到需要将pdf文件写入客户端。
处理字节数组的最佳方法是什么?
创建一个modelobject并将字节数组作为普通字节数组保留在那里?
例如:

public class PdfDocument {
    private byte[] bytearray;
    private String pdftitle;
}
或者,有没有比将Java对象作为普通字节数组保存在内存中更好的Java对象? 像是比特布弗或其他什么


谢谢

这取决于您如何接收数据以及数据是否以某种方式更改:

  • 听起来您已经从后端获得了字节数组。在这种情况下,我认为您的简单类将是将其保存在内存中的最有效的方法,因为它不会消耗大量额外内存(对于
    PdfDocument
    对象本身,只需要几个字节)
  • 但是,您应该考虑后端是否保证以后不会更改阵列。如果情况并非如此,或者您希望安全起见,可以使用以下内容创建副本:

  • 看起来你在寻找更奇特的东西,但我想你的类在这里非常好。

    变量“bytearray”是对类数组对象的引用。
    引用只占用很少的内存空间。

    这取决于您想用它做什么。具有所需长度的字节数组是存储数据最有效的内存方式。如果您可以将其直接传递给将其发送给客户端的方法,
    byte[]
    纯粹在内存中是最好的方式。如果等待写入客户机的所有
    字节[]
    s内存可能不足,则可以使用将字节存储在RAM和临时文件的组合中,就像C中的
    mmap
    一样。
    byte[] bytearray = Arrays.copyOf(bytearray, bytearray.length);