假设您有以下代码:
BufferedReader br = new BufferedReader(new InputStreamReader(new File("MyFile.txt")));
FooParser parser = new FooParser();
List<Foo> fooList = new ArrayList<Foo>();
try {
String line = br.readLine();
while (line != null && !line.isEmpty()) {
Foo foo = parser.parse(line);
fooList.add(foo);
line = br.readLine();
}
} catch (IOException ioe) {
// handle it
}
稍后,该列表用于通过以下调用将对象写入数据库(确切地说是 PostgreSQL):
dao.write(fooList);
现在,上面的代码可能看起来简单易懂,但是,当Foo
列表中的对象过多时,就会出现问题,从而导致OutOfMemoryError
.
所以,我想知道是否有某种模式或约定关于如何对数据库进行“缓冲”写入,以避免将大量对象保留在最终将存储在数据库中的内存中?
我正在考虑沿着这些思路走,受 启发BufferedOutputStream
,保持对象的缓冲区(可配置长度),一旦缓冲区填满,就写入并刷新到数据库。
由于我的双手非常关注这一点(我只允许进行小错误修复,而不是更改架构),这是一个足够好的方法和/或有更好的方法吗?
谢谢 :D