首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在循环中运行遍历后,V8因内存而崩溃

在循环中运行遍历后,V8因内存而崩溃
EN

Stack Overflow用户
提问于 2019-02-06 00:10:22
回答 1查看 50关注 0票数 0

我在arangoDB 3.3.11下运行了一个Foxx应用程序。以类似的方式进行压力测试;

代码语言:javascript
复制
var traverser=new traversal.Traverser(config);

//Loop through an list of entities and do traversal on each of them
BigArray.forEach(function(e){
var vertex=db._document(e);
traverser.traverse(result,vertex)
})

遍历本身并没有什么特别之处,只是当且仅当满足某些条件时,它的config.visitor才被用来推送顶点。

代码语言:javascript
复制
config.visitor=function(config,result,vertex,path){
//Write a vertex if conditions are right. Vertex normal size json object
if(hashTable[vertex.id])
result.push(vertex);

}

这样,内存就会慢慢地积累起来,然后崩溃并返回canceled request

代码语言:javascript
复制
{"error":true,"errorMessage":"canceled request","code":410,"errorNum":21}

与堆大小警告一起使用

代码语言:javascript
复制
reached heap-size limit, interrupting V8 execution (heap size limit 3254779904, used 3140128304)

在循环中使用遍历有什么注意事项吗?使用小数组时,应用程序仍然有效,但如果使用复杂且足够大的数组,则会出现错误。我总是认为每一次遍历都是一个独立的函数,在每次迭代中,GC都会自己扫入并管理内存。

EN

回答 1

Stack Overflow用户

发布于 2019-03-04 18:45:53

为了获得更好的性能和更少的V8执行限制,请使用AQL traversals

V8对字符串有256MB的限制,似乎对于更大的遍历,旧的遍历实现可能会达到这个限制,不幸的是,我们对此无能为力。

其他用户have had similar observations

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54538543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档