Spring Data Neo4j template.fetch()导致OutOfMemory?

时间:2013-04-22 07:20:11

标签: neo4j spring-data-neo4j

是否存在使用template.fetch()导致OutOfMemoryException的理论可能性?比方说,例如,有一个循环循环100次,每次调用template.fetch()。这将是这样的:

List<Building> buildings = repository.getBuildings();
for(Building b : buildings) {
    Country c = repository.include(b.getCountry()); // this calls template.fetch()
    // do something with country..
}

在一定量的循环之后,获取非常慢,然后抛出OutOfMemoryException。提取是否可能是问题,如果是这样的话,如何处理呢?

干杯

1 个答案:

答案 0 :(得分:1)

Fetch只是加载内存中的对象,您应该修改代码,以便不加载内存中的每个对象或增加内存大小。 顺便说一句,由于从neo4j获取的对象与普通Java对象没有区别,因此当它们超出范围时,垃圾收集器会将它们删除。在你的情况下,将它们分配给for循环中的局部变量,它们的生命从赋值时间延伸到下一个赋值,甚至最后一个赋值也会在循环终止时立即死亡。