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

时间:2018-10-21 21:25:25

标签: java arrays bytebuffer

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

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

还是有比将它作为纯字节数组保留在内存中更好的Java对象? 像ByteBuffer之类的东西。

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

    byte[] bytearray = Arrays.copyOf(bytearray, bytearray.length);
    

似乎您正在寻找更有趣的东西,但是我想您的课程在这里很好。

答案 1 :(得分:0)

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