在Neo4j 2.1和Neo4jClient中运行具有高限制但对象数量很少的查询时出现内存不足错误

在Neo4j 2.1和Neo4jClient中运行具有高限制但对象数量很少的查询时出现内存不足错误,neo4j,neo4jclient,Neo4j,Neo4jclient,我基本上运行的是MATCH(n:Node)return n LIMIT 2147483644,它可以工作,但是如果我执行MATCH(n:Node)return n LIMIT 2147483645(只需再运行一次),它会崩溃(在JVM中): [System.ServiceModel.ExceptionDetail]:OutOfMemoryError:请求的数组大小超过VM限制(错误详细信息等于ExceptionDetail,可能由IncludeExceptionDetailInFaults=tr

我基本上运行的是
MATCH(n:Node)return n LIMIT 2147483644
,它可以工作,但是如果我执行
MATCH(n:Node)return n LIMIT 2147483645
(只需再运行一次),它会崩溃(在JVM中):

[System.ServiceModel.ExceptionDetail]:OutOfMemoryError:请求的数组大小超过VM限制(错误详细信息等于ExceptionDetail,可能由IncludeExceptionDetailInFaults=true创建,其值为:
Neo4jClient.NeoException:OutOfMemoryError:请求的数组大小超过VM限制

但是,类型n的节点数量甚至不是100。请注意,该限制适用于int32.MaxValue-3,但不适用于int32.MaxValue-2

如果我直接在web浏览器外壳或控制台中执行此操作,它将正常工作


有人经历过这种行为吗?

我很好奇,您使用2g限制的用例是什么?我们有一个通用接口,可以检索最多数量的项目(分页).对于单元测试,有时我们希望检索所有项以检查我们是否拥有所需的确切项数,我们通过检索所需的最大项数来实现这一点。这是一种在测试和不更改/添加新方法之间进行折衷的方法。要获取所有项,请完全忽略
LIMIT
语句。看起来像
LIMIT
的内部使用会产生一个请求大小的数组。是的,我知道这会带来一切,但在2.0.x中,我可以毫无问题地使用LIMIT int32.MaxValue。如果是回归,请在