Java morphia mongodb批量检索海量数据

Java morphia mongodb批量检索海量数据,java,mongodb,morphia,Java,Mongodb,Morphia,我想使用morphia从mongodb从db中检索200000个数据 早些时候我用的是 query.asList() 这给了我内存不足的例外 我试着把它改成 query.batchSize(50).asList() 但是没有运气 我将代码更新为 Iterable Iterable=query.fetch(); 迭代器迭代器=iterable.Iterator(); while(iterator.hasNext()){ dataStreamsList.add(iterator.next()); }

我想使用morphia从mongodb从db中检索200000个数据

早些时候我用的是

query.asList()

这给了我内存不足的例外 我试着把它改成

query.batchSize(50).asList()

但是没有运气

我将代码更新为

Iterable Iterable=query.fetch();
迭代器迭代器=iterable.Iterator();
while(iterator.hasNext()){
dataStreamsList.add(iterator.next());
}           
System.out.println(“迭代完成”);

query.asList()
会将所有内容拉入内存
query.fetch()
将返回一个迭代器,允许您处理每个实体(默认情况下为20个批次),而无需首先将整个结果集加载到内存中。

请不要使用非英语术语表示数量级,因为更广泛的受众可能不清楚什么是“20万的数据”——例如,200千字节似乎不太多。我已经按照您在上述问题中建议的使用当前代码更新了我的问题,只是为了在一个小时后更新,我再次得到相同的异常java.lang.OutOfMemoryError:java堆空间
Iterable<DataStreams> iterable= query.fetch();
            Iterator<DataStreams> iterator=iterable.iterator();
            while (iterator.hasNext()) {
               dataStreamsList.add(iterator.next());                
            }           
           System.out.println("iteration done");