cop*_*ead 6 java memory-leaks objectoutputstream objectinputstream
我有一个巨大的文件,其中包含ObjectOutputStream一个接一个地写入的对象列表.
for (Object obj : currentList){
oos.writeUnshared(obj);
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用ObjectInputStream读取此文件.但是,我需要同时读取多个文件,因此我无法将整个文件读入内存.但是,使用ObjectInputStream会导致堆内存不足错误.从我读到的,这是因为ObjectInputStream有内存泄漏并且即使在返回它们之后也维护对read对象的引用.
我如何要求ObjectInputStream不保持其读取的引用?
一种可能的解决方案是在ObjectOutputStream上调用方法reset():"这将忽略已经写入流的任何对象的状态.状态重置为与新的ObjectOutputStream相同.流中的当前点被标记为重置,因此相应的ObjectInputStream将在同一点重置."(从java文档中提取)对ObjectOutputStream执行重置也会重置ObjectInputStream状态.
我假设你也可以控制你的ObjectOutputStreams?
| 归档时间: |
|
| 查看次数: |
2199 次 |
| 最近记录: |