Java Spring MongoDB流内存泄漏?
以下代码可能导致内存泄漏:Java Spring MongoDB流内存泄漏?,java,spring,java-stream,spring-mongodb,Java,Spring,Java Stream,Spring Mongodb,以下代码可能导致内存泄漏: public int reregister(ReregisterDTO reregisterDTO) { AtomicInteger count = new AtomicInteger(0); StreamUtils.createStreamFromIterator( mongoTemplate .stream(createQuery(reregisterDTO), Shipment.class))
public int reregister(ReregisterDTO reregisterDTO) {
AtomicInteger count = new AtomicInteger(0);
StreamUtils.createStreamFromIterator(
mongoTemplate
.stream(createQuery(reregisterDTO), Shipment.class))
.forEach(shipment -> this.reregisterShipment(shipment, count)
);
return count.get();
}
它从数据库中获取了20000个实体,但似乎内存没有释放。
由于容量更大,JVM完全耗尽了内存。
如何释放内存并避免它?是否底层srping mongodb代码在某个地方有引用
更新和修复:
显然我把括号弄混了,顺序是这样的:
StreamUtils.createStreamFromIterator(
mongoTemplate.stream(
createQuery(reregisterDTO),
Shipment.class
)
).forEach(shipment -> this.reregisterShipment(shipment, count));
下面是袁清飞的回答 似乎您需要通过
StreamUtils.createStreamFromIterator(迭代器)
创建流,而不是直接使用stream
请参阅哦,天哪,显然是个愚蠢的错误。forEach(装运->此。重新注册装运(装运,计数)必须在StreamUtils.createStreamFromIterator()之后!感谢您指出这一点!