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

What is the best way to store a byte array in memory

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

public class PdfDocument {
    private byte[] bytearray;
    private String pdftitle;
}

或者是否有更好的 Java 对象而不是将其作为普通字节数组保存在内存中? 像 ByteBuffer 或其他东西。

谢谢

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

  1. 听起来您已经从后端获得了字节数组。在那种情况下,我认为您的简单 class 将是将其保存在内存中的最有效方法,因为它不会消耗大量额外内存( PdfDocument 对象本身只需要几个字节)。
  2. 但是你应该考虑后端是否保证以后不会改变数组。如果不是这种情况,或者如果你想安全起见,你可以使用 Arrays.copyOf:

    创建一个副本
    byte[] bytearray = Arrays.copyOf(bytearray, bytearray.length);
    

看来您正在寻找更花哨的东西,但我想您的 class 在这里非常合适。

变量"bytearray"是对class数组对象的引用。 引用占用内存很少space.