Java 在Neo4j中导入的节点不能超过10000个

Java 在Neo4j中导入的节点不能超过10000个,java,neo4j,Java,Neo4j,我正试图将Twitter上50MB的用户和追随者文本文件中的数据导入Neo4j。但我的代码只运行到大约10000个节点并抛出错误:“java.lang.OutOfMemoryError:超出了GC开销限制”。这是我的代码,我不知道我哪里做错了 BufferedReader br = new BufferedReader(new FileReader(inputFile)); String currentLine; String token[] = null;

我正试图将Twitter上50MB的用户和追随者文本文件中的数据导入Neo4j。但我的代码只运行到大约10000个节点并抛出错误:“java.lang.OutOfMemoryError:超出了GC开销限制”。这是我的代码,我不知道我哪里做错了

        BufferedReader br = new BufferedReader(new FileReader(inputFile));
    String currentLine;
    String token[] = null;

    try (Transaction tx = graphDb.beginTx()) {
        Label userLabel = DynamicLabel.label("User");

        while((currentLine = br.readLine()) != null) {
            if(!currentLine.equals("\n")) token = currentLine.split("\t");
            if(token.length > 2) {

                userNode = graphDb.createNode(userLabel);
                userNode.setProperty("username", token[2]);
                userNode.setProperty("id", token[1]);
                userNode.setProperty("cookie", token[0]);
                System.out.println("Insert user: " + token[0] + " " + token[1] + " " + token[2]);
                System.out.println("Insert follower...");

                for(int i=3;i<token.length;i++) {
                    followerNode = graphDb.createNode(userLabel);
                    followerNode.setProperty("id", token[i]);
                    relationship = userNode.createRelationshipTo(followerNode, RelTypes.FOLLOWED_BY);

                }
                System.out.println("Insert follower: done! - " + (token.length-3));

            }
        }

        tx.success();
    }

    br.close();
BufferedReader br=newbufferedreader(newfilereader(inputFile));
串电流线;
字符串标记[]=null;
try(事务tx=graphDb.beginTx()){
Label userLabel=DynamicLabel.Label(“用户”);
而((currentLine=br.readLine())!=null){
如果(!currentLine.equals(“\n”))标记=currentLine.split(“\t”);
如果(token.length>2){
userNode=graphDb.createNode(userLabel);
setProperty(“用户名”,令牌[2]);
setProperty(“id”,令牌[1]);
setProperty(“cookie”,令牌[0]);
System.out.println(“插入用户:“+token[0]+”“+token[1]+”“+token[2]);
System.out.println(“插入跟随器…”);

对于(inti=3;i您的问题不在于neo4j,而在于java。具体来说,您的堆超过了最大大小

您可以:

a) 优化您的代码,使堆不会变得像现在这样大(我通常不会在开发的后期讨论优化,但您必须在某处浪费大量的堆空间,特别是当您的输入文件只有50MB时)


b) 使用以下命令行参数运行java,它允许您覆盖最大堆大小:
-Xmx1024m
。这将设置为1024 MB,但您可以使用所需的任何内容替换
1024

谢谢您的帮助,但在我询问之前,我已将其设置为1024 MB,它仍会引发相同的错误。可能是我遇到的问题s在我的代码中。批处理事务,例如,每10k个用户提交一次发送,然后创建一个新的发送。