1

それぞれ 100Kb の複数のバイト配列に分割したい巨大な POJO (1G - 6G) があります。現在、私のアルゴは次のとおりです。

  1. 大きなオブジェクトを大きなバイト[]にシリアル化します。つまり、1Gオブジェクトを1Gバイト[]にシリアル化します
  2. 大きい byte[] を小さい 100k byte[] に分割します

ただし、これにより、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