私は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 つのインスタンスがあります。なぜこの例外があるのか わかりません。