1

我有一个巨大的 POJO (1G - 6G),我想将其拆分为每个 100Kb 的多个字节数组。我的算法目前如下:

  1. 将大对象序列化为大字节[] 即 1G 对象为 1G 字节[]
  2. 将大字节 [] 拆分为更小的 100k 字节 []

但是,这会产生很大的内存压力,因为我现在有 1 个对象 + 1 个字节 [] + 大约 100k 字节 []

使用 FileInputStream 将一个大文件拆分为多个较小的字节数组相对容易,如下所示

File file = new File("asd");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[1024*1024*10];
int n = -1;
while((n = bis.read(buffer))!=-1) {
  bos.write(buffer,0,n):
}

我怎样才能为常规 POJO 实现相同的目标?有没有办法可以迭代地将对象读入 100K 字节数组,而不是创建大字节数组并将其拆分?

4

0 回答 0