0

小さな入力値に対して適切に実行されるコードを Eclipse で作成しましたが、テスト ケースのサイズが大きくなるとすぐにエラーが発生しOutOfMemoryExceptionます。StackOverFlow

eclipse.exe -vmargs -Xmx1gヒープを 1G にするために使用しようとしましたが、それでも同じエラーが発生します。2G を試すと、JVM を起動できないと表示されます。

だから、このコードを実行する方法が何かあるのだろうかと思っています。任意の助けをいただければ幸いです。前もって感謝します。

編集:これは私のヒープがオーバーフローする場所です。入力サンプルが大きすぎるため、moory 問題が発生します。

 while ((line = br.readLine()) != null) {

        String[] linevalue= (line.trim().split("\\s+"));
        int l= linevalue.length;
        dg.addNode(Long.parseLong(linevalue[0]));
        dg.addNode(Long.parseLong(linevalue[1]));
        dg.addEdge(Long.parseLong(linevalue[0]), Long.parseLong(linevalue[1]));

    }

他のクラスには次のコードが存在します。ここで mGraph は HashMap です。

public boolean addNode(T node) {
    /* If the node already exists, don't do anything. */
    if (mGraph.containsKey(node))
        return false;

    /* Otherwise, add the node with an empty set of outgoing edges. */
    mGraph.put(node, new HashSet<T>());
    return true;
}


public void addEdge(T start, T dest) {
    /* Confirm both endpoints exist. */
    if (!mGraph.containsKey(start) || !mGraph.containsKey(dest))
        throw new NoSuchElementException("Both nodes must be in the graph.");

    /* Add the edge. */
    mGraph.get(start).add(dest);
}
4

2 に答える 2

1

Eclipse では、コードを実行するときに VM のサイズを設定できます。

に進みRun > Run configurationsます。次に、タブで、 VM 引数の下Argumentsに置きます。-Xms1000m

于 2012-04-16T20:37:42.173 に答える
0

tskuzzyの答えをフォローアップするには:

ヒープの場合、

-Xms -Xmx

スタック用

-Xss

と、 との1gためにお勧めしますXmxXmx8m-Xss

于 2012-04-16T20:54:34.210 に答える