0

私は20000ノードのグラフを持っています。次のコードは例外を発生させます。

    double Di=0;
    Iterator<Relationship> rel;
    int cnt=0;
    for (int i = 0; i < geni.size(); i++) 
        { 
          Di=0;
          cnt=0;
          rel = geni.get(i).getRelationships(RelTypes.SIM).iterator();    
          while (rel.hasNext())
              {Di+=(Double)rel.next().getProperty("SIM");   
              cnt++;
              }
          System.out.println(i+" "+cnt);
                      }

このコードは以下を出力します:

0 11749
1 11974
2 11949
.
.
74 10126
75 10102
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded   

私が使用する場合:

Runtime r = Runtime.getRuntime(); 
long freeMem = r.freeMemory();
System.out.println("free memory: " + freeMem);

私は多くの空きメモリを見ることができます。

Di の 1 つのインスタンス、cnt の 1 つのインスタンス、rel の 1 つのインスタンスがあります。なぜこの例外があるのか​​ わかりません。

4

2 に答える 2

0

数千回の操作ごとにトランザクションをコミットしてみてください。

トランザクション tx = db.beginTx(); { for ( int i = 0; i を試してください
于 2013-01-31T08:27:57.977 に答える