2016-08-06 14 views
0

Ich bekomme "Ausnahme in Thread" main "java.lang.OutOfMemoryError: Java-Heap-Space" Ausnahme beim Hinzufügen von Werten in ArrayList. Dies ist nur ein Beispiel"java.lang.OutOfMemoryError: Java-Heap-Space" zum Hinzufügen von Elementen in Array

public class Test  { 

    public static void main(String[] args) 
    { 
     Test t= new Test(); 
     ArrayList<ArrayList<String>> deleteError = new ArrayList<ArrayList<String>>(); 
     for(TableItem item : items) // loop moves 800 times 
     { 
      for(String Element_ID : checkelementID) // another loop which check element ids which moves for 800 again 
      { 
       t.deleteErrorInArrayList("1", "GEN_err", "11", deleteError); 
       t.deleteErrorInArrayList("1", "Greater_than", "11", deleteError); 

       t.deleteErrorInArrayList("1", "GEN_err", "16", deleteError); 
       t.deleteErrorInArrayList("1", "Greater_than", "16", deleteError); 
      } 
     } 


    } 
    public void deleteErrorInArrayList(String rowID,String message,String column,ArrayList<ArrayList<String>> mainlist) 
    { 
     ArrayList<String> list = new ArrayList<String>(); 
     list.add(rowID); 
     list.add(message); 
     list.add(column); 
     mainlist.add(list); 
     list = null; 
    } 
} 

Bitte helfen Sie mir. Wie man obigen Code optimiert, also kann ich Zeit reduzieren und Ausnahme entfernen.

+0

Mögliches Duplikat von [java.lang.OutOfMemoryError: Java-Heap-Space] (http://StackOverFlow.com/questions/1596009/java-lang-outofmemoryerror-java-heap-space) –

Antwort

0

Vorausgesetzt, dass alle Elemente der inneren Listen die gleiche Struktur (drei Strings) haben, können Sie besser ein Array (String[]) anstelle einer ArrayList speichern.

Weiter: Sie verschwenden Speicherplatz durch das Speichern von Zeichenfolgen, wenn Sie (anscheinend) nur einige Codes benötigen. Ich würde versuchen, GEN_err und Greater_than durch eine Ganzzahl-Codierung zu ersetzen, und speichert Arrays von drei Ganzzahlen (oder Kurzschlüsse oder Bytes) statt und Sie sollten weniger Speicher verwenden.

+0

Aber ich habe nicht vor Definierte Größe für String []. Daten könnten erhöht oder verringert werden. –

+0

Nun, es ist schwer für uns, Tipps zur Optimierung von Code zu geben, wenn Sie uns nicht die Spezifikationen geben (nur Code). – leonbloy

+0

Ich denke, ich habe ganze Hauptklasse gegeben, nur um das Szenario zu verstehen. Lassen Sie mich wissen, wenn Sie etwas anderes benötigen. –

Verwandte Themen