Приведенный ниже код вызывает предположительно утечку памяти:
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));
Кредиты на ответ Qingfei Юань ниже.