ObjectInputStream を使用して巨大なファイルをロードすると、オブジェクト グラフの解決のために、読み取られたすべてのオブジェクトがストリームによってバッファリングされます。
これにより、私の場合は必要のない巨大なメモリ オーバーヘッドが発生します (読み込まれたすべてのオブジェクトは相互に依存しています)。
このバッファをリセットする ObjectOutputStream の reset() メソッドに相当するものはありますか?
コード例:
try (FileInputStream fileInputStream = new FileInputStream(filename);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
ObjectInputStream objectInputStream = new ObjectInputStream(bufferedInputStream)) {
while (object = objectInputStream.readObject()) {
System.Out.println(object.toString());
}
}
- クラスには実際には reset メソッドがありますが、まったく別のことを行います。
- メモリの肥大化を引き起こす Java API を参照してください