2014-10-31 26 views
0

我的代碼是由於某種原因給我一個內存不足的錯誤。我試圖增加分配給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) 

的錯誤,我不知道現在該怎麼辦...

+0

你可以試試這個http://stackoverflow.com/questions/13048623/java-heap-space-error-making-eclipse-to-hang – Tapos 2014-10-31 20:32:38

+0

我試過了......還是一樣的錯誤 – user3606943 2014-10-31 20:40:52

回答

0

在價值觀eclipse.ini改變了Eclipse自己使用的內存,而不是它在你運行程序時使用的內存。

要更改程序在運行時使用的內容,請打開'運行>運行配置'對話框。在「Java程序」部分找到您的程序。在「參數」選項卡上,在「虛擬機參數」部分添加您的內存參數。