在eclipse中堆和堆栈

时间:2012-04-16 20:28:17

标签: java eclipse heap stack-overflow out-of-memory

我在Eclipse中编写了一个代码,可以正确运行小输入值,但只要我的测试用例大小增加,就会出现OutOfMemoryExceptionStackOverFlow错误。

我尝试使用eclipse.exe -vmargs -Xmx1g让我的堆出去1G,但我仍然得到同样的错误。当我尝试2G时,它表示无法启动JVM。

所以我想知道是否有任何方法让我运行此代码。任何帮助,将不胜感激。提前谢谢。

编辑: 这是我的堆积溢出的地方。输入样本太大并导致问题。

 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);
}

2 个答案:

答案 0 :(得分:1)

在Eclipse中,您可以在执行代码时设置V​​M的大小。

转到Run > Run configurations。然后在选项卡Arguments中,将-Xms1000m放在VM参数下。

答案 1 :(得分:0)

跟进tskuzzy的answer

对于堆,

-Xms -Xmx

对于堆栈

-Xss

我建议1gXmx使用Xmx8m

推荐-Xss