0

是否存在使用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。获取可能是问题吗?如果是这种情况,如何处理?

干杯

4

1 回答 1

0

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

于 2013-04-25T17:15:03.303 回答