Есть ли теоретическая возможность, что использование template.fetch()
может привести к OutOfMemoryException? Скажем, например, что существует цикл, который петли 100 раз и каждый раз вызывается template.fetch()
. Это было бы что-то вроде этого:Spring Data Neo4j template.fetch(), ведущий к OutOfMemory?
List<Building> buildings = repository.getBuildings();
for(Building b : buildings) {
Country c = repository.include(b.getCountry()); // this calls template.fetch()
// do something with country..
}
После определенного количества петель Выборка получает очень медленно, а затем он бросает OutOfMemoryException. Может ли проблема выборки, и если это так, как это можно обработать?
Приветствия
Fetch просто загружает объекты в память, либо модифицирует ваш код, чтобы не загружать каждый объект в память или не увеличивать объем памяти, кроме того, я не думаю, что могут быть другие решения. – remigio
Спасибо @remigio! Вы знаете, есть ли способ удалить загруженные объекты памяти во время выполнения? – paf
Объекты, извлеченные из neo4j, ничем не отличаются от простых объектов Java, поэтому они удаляются сборщиком мусора при выходе из области видимости. В вашем случае, если они назначены локальным переменным внутри цикла for, они помечены как мусор, собранный, как только цикл for завершается. – remigio