首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除大量OutOfMemory中的节点时发生GC Neo4j错误

删除大量OutOfMemory中的节点时发生GC Neo4j错误
EN

Stack Overflow用户
提问于 2012-08-25 20:28:28
回答 1查看 308关注 0票数 3

我有大量高度连接的节点,有时我希望从数据库中删除这些节点。通过几次遍历,我得到了一个要删除的节点列表:

代码语言:javascript
运行
复制
for (Node nodeToDelete : nodesToDelete)
{
    for (Relationship rel : nodeToDelete.getRelationships())
    {
        rel.delete();
    }

    nodeToDelete.delete();
}   

问题是,无论我设置了多大的堆,我总是得到:java.lang.OutOfMemoryError: GC开销限制超过

删除大量节点列表的最佳方法是什么?我知道我必须先删除它们之间的关系,然后才能真正删除它们--我逐步完成了代码,在删除关系时似乎失败了。是否有比我所拥有的更好的删除节点的功能?所有东西都包装在一个非常重要的事务中,因为删除的任何部分都不允许失败--这会是一个问题吗?

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2012-08-26 01:43:46

一批做一次。问题是您的删除被包装在一个事务中,事务可以被恢复,但是为了存储该还原,它被存储在内存中。试着做这个。

代码语言:javascript
运行
复制
long counter = 0;
for (Node nodeToDelete : nodesToDelete)
{
    if (counter == 1000) {
        tx.success();
        tx.finish();
        tx = db.beginTransaction();
        counter = 0;
    }
    for (Relationship rel : nodeToDelete.getRelationships())
    {
        rel.delete();
    }

    nodeToDelete.delete();
    counter++;
}   
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12125390

复制
相关文章

相似问题

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