Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用neo4j embedded时内存问题_Java_Graph_Neo4j - Fatal编程技术网

Java 使用neo4j embedded时内存问题

Java 使用neo4j embedded时内存问题,java,graph,neo4j,Java,Graph,Neo4j,我在下面的方法中遇到了outOfMemory异常。有人能帮忙吗 此图为7073455个节点和36549084个关系。我正在使用以下参数运行此程序: -Xmx3072M-XX:+UseConcMarkSweepGC 代码: getAllTypeNodes拉入图形的百分比是多少 你能分享这个例外吗 您的提交大小是多少 应该是10k到50k左右,但是你也必须为REL增加它,否则,您可能最终的提交大小为x,但您的事务中实际有x*个rels元素。也许您可以将代码拆分为更容易理解的较小方法。getAllTy

我在下面的方法中遇到了outOfMemory异常。有人能帮忙吗

此图为7073455个节点和36549084个关系。我正在使用以下参数运行此程序: -Xmx3072M-XX:+UseConcMarkSweepGC

代码:


getAllTypeNodes拉入图形的百分比是多少

你能分享这个例外吗

您的提交大小是多少


应该是10k到50k左右,但是你也必须为REL增加它,否则,您可能最终的提交大小为x,但您的事务中实际有x*个rels元素。

也许您可以将代码拆分为更容易理解的较小方法。getAllTypeNOdes方法返回的节点总数为700个,其中约有600个,我尝试过提交大小为10k、50K、100K。每次都失败了。我正在再次运行它,并将很快发布异常的确切堆栈跟踪。
public Iterable<Node> calculatePa(GraphDatabaseService graphDb) throws Exception {


float pa = 0.0f;
Transaction tx = graphDb.beginTx(); 
Iterable<Node> allNodes = getAllTypeNodes(graphDb, TERM_NODE);
int counter =0;
HashMap<String, String> starNodemap = new HashMap<String, String>(); 
PrintWriter pw = new PrintWriter(TERM_STAR_NODE_FILE_PATH);
Iterable<Relationship> pVRels;
Iterable<Relationship> removeRels;
Iterable<Relationship> pVRels2;
Node termNode;
Iterator<Node> termItr = allNodes.iterator();
while(termItr.hasNext()){
    termNode = termItr.next();
    int sumPV = 0,starNodeCounter = 0;
    pVRels = termNode.getRelationships( Direction.OUTGOING, RelTypes.PV);
    counter++;
    for (Relationship pvRel : pVRels){              
         sumPV +=Integer.parseInt(pvRel.getProperty(PV).toString());
         starNodeCounter++;

     }

    // to stop executing the rest of the code for this node
     if(starNodeCounter > STAR_NODE_TERM_THRESHOLD){

         if(isDebug){
             pw.println(termNode.getProperty(TERM).toString()+ PIPE    +String.valueOf(starNodeCounter));
             pw.flush();
         }
         removeRels = termNode.getRelationships(RelTypes.PV, Direction.OUTGOING );
         for (Relationship r : removeRels){
         r.delete();
     }
     termNode.delete();

     continue;
}
termNode.setProperty(SUM, sumPV);
pVRels2 = termNode.getRelationships( Direction.OUTGOING, RelTypes.PV);          
for (Relationship pvRel : pVRels2 ){
    pa = Integer.parseInt(pvRel.getProperty(PV).toString())/(float)sumPV;
    pvRel.setProperty(Pa, pa);
}

if(counter == COMMIT_SIZE){
    LOGGER.info("Calculated Pa for :::"+counter+"::: at ::"+(new Date()));
    LOGGER.info(Runtime.getRuntime().freeMemory()/(1024*1024)+"::: is the free memory before");
     tx.success();
     tx.close();
     tx = graphDb.beginTx();    
     LOGGER.info(Runtime.getRuntime().freeMemory()/(1024*1024)+"::: is the free memory after");
     counter =0;
}
}
if(counter!=0){
     tx.success();
}       
pw.close();
tx.close(); 

return allNodes;
}

public  Iterable<Node> getAllTypeNodes(final GraphDatabaseService graphDb , String type)    {           
Iterable<Node> allNodes = null; 
try( Transaction tx = graphDb.beginTx() ){  
allNodes = GlobalGraphOperations.at(graphDb).getAllNodesWithLabel(DynamicLabel.label(type));
//              long n_allNodes = IteratorUtil.count(allNodes);             
//  LOGGER.info("Count of "+type+"s -->"+n_allNodes);                           
tx.success();
}       
return allNodes;        
}