在内存中存储字节数组的最佳方法是什么
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 或其他东西。
谢谢
这取决于您如何接收数据以及它是否以某种方式更改:
- 听起来您已经从后端获得了字节数组。在那种情况下,我认为您的简单 class 将是将其保存在内存中的最有效方法,因为它不会消耗大量额外内存(
PdfDocument
对象本身只需要几个字节)。
但是你应该考虑后端是否保证以后不会改变数组。如果不是这种情况,或者如果你想安全起见,你可以使用 Arrays.copyOf
:
创建一个副本
byte[] bytearray = Arrays.copyOf(bytearray, bytearray.length);
看来您正在寻找更花哨的东西,但我想您的 class 在这里非常合适。
变量"bytearray"是对class数组对象的引用。
引用占用内存很少space.
在我的服务器事务中的某处,我从某个后端作业接收到一个表示 pdf 文档的字节数组。
稍后在交易中需要将 pdf 写入客户端。
但目前我有那个字节数组,我想将它存储在内存中,直到需要将 pdf 文件写入客户端。
处理字节数组的最佳方法是什么?
创建一个模型对象并将字节数组保存为普通字节数组?
所以例如像这样:
public class PdfDocument {
private byte[] bytearray;
private String pdftitle;
}
或者是否有更好的 Java 对象而不是将其作为普通字节数组保存在内存中? 像 ByteBuffer 或其他东西。
谢谢
这取决于您如何接收数据以及它是否以某种方式更改:
- 听起来您已经从后端获得了字节数组。在那种情况下,我认为您的简单 class 将是将其保存在内存中的最有效方法,因为它不会消耗大量额外内存(
PdfDocument
对象本身只需要几个字节)。 但是你应该考虑后端是否保证以后不会改变数组。如果不是这种情况,或者如果你想安全起见,你可以使用
创建一个副本Arrays.copyOf
:byte[] bytearray = Arrays.copyOf(bytearray, bytearray.length);
看来您正在寻找更花哨的东西,但我想您的 class 在这里非常合适。
变量"bytearray"是对class数组对象的引用。 引用占用内存很少space.