【问题标题】:Error for Heap Space Cap堆空间上限错误
【发布时间】:2014-12-28 06:16:16
【问题描述】:

我的代码出于某种原因给了我一个内存不足的错误。我尝试增加分配给 ecplise 的内存量,但它似乎什么也没做。这是我的错误来自的代码:

public static ArrayList<Integer> getSortedEndPoints(ArrayList<Interval>leftSortedIntervals, ArrayList<Interval> rightSortedIntervals) {
    int left;
    int size = leftSortedIntervals.size();
    Interval interval;
    ArrayList <Integer> sortedEndPoints = new ArrayList<Integer>();
    for (int i = 0; i < size; i++){
        interval = leftSortedIntervals.get(i);
        left = interval.leftEndPoint;
        //System.out.println("Left Endpoint at " + i + "is : " + left);
        if (sortedEndPoints.size() == 0){
            //System.out.println("Entered size 0");
            sortedEndPoints.add(left);
        } else if (searchForDuplicate(sortedEndPoints, left) == false){
            //System.out.println("Search For Duplicates is False");
            sortedEndPoints.add(left);
        }
    }
    System.out.println("Sorted End Points after left search : " + sortedEndPoints);

    int right;
    size = rightSortedIntervals.size();
    for (int i = 0; i < size; i++){
        interval = rightSortedIntervals.get(i);
        right = interval.rightEndPoint;
        if (sortedEndPoints.size() == 0){
            sortedEndPoints.add(right);
        } else if (searchForDuplicate(sortedEndPoints, right) == false){
            System.out.println("Search For Duplicates is False");
            size = sortedEndPoints.size()-1;
            System.out.println("Size= " + size);
            System.out.println("sortedEndPoints.get(size) " + sortedEndPoints.get(size));
            if (right > sortedEndPoints.get(size)){
                sortedEndPoints.add(right);
            } else {
            for (int t = 0; t < sortedEndPoints.size(); t++){
                if (right < sortedEndPoints.get(t)){
                    sortedEndPoints.add(t, right);
                    }
                }
            }
        }
    }
    System.out.println("Sorted End Points after right search : " + sortedEndPoints);
    return sortedEndPoints;
}


private static boolean searchForDuplicate(ArrayList<Integer>sortedEndPoints, int left){
    for (int track = 0; track < sortedEndPoints.size(); track++){
        if (left == sortedEndPoints.get(track)){
            return true;
        }
    }
    return false;
}

这是我遇到的错误

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2760)
    at java.util.Arrays.copyOf(Arrays.java:2734)
    at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
    at java.util.ArrayList.add(ArrayList.java:370)
    at structures.Sorter.getSortedEndPoints(Sorter.java:148)
    at structures.IntervalTree.<init>(IntervalTree.java:39)
    at apps.IntervalTreeDriver.main(IntervalTreeDriver.java:19)

我现在不知道该怎么办......

【问题讨论】:

标签: eclipse memory heap-memory space


【解决方案1】:

eclipse.ini 中的值会更改 Eclipse 自己使用的内存,而不是它在运行程序时使用的内存。

要更改程序在运行时使用的内容,请打开“运行 > 运行配置”对话框。在“Java 程序”部分找到您的程序。在“参数”选项卡上的“VM 参数”部分中添加您的内存参数。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多