當使用ObjectInputStream加載大文件時,所有讀取的對象都通過流進行緩存以便進行對象圖解析。
這會導致巨大的內存開銷,在我的情況下不需要(讀取的所有對象都是相互依賴的)。
是否有一個相當於ObjectOutputStream的reset()方法來重置此緩衝區?如何重置ObjectInputStream對象圖緩存以避免內存膨脹
代碼示例:
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());
}
}
- 實際上有在類的復位方法,但它確實完全不同的事情。
- 見Java APIs which cause memory bloat
你能告訴我們你的代碼嗎? – Raptor 2013-03-28 06:06:54