Out of Memory (Java Heap Space)

torben

Mitglied
Hallo java-forum,

ich habe ein kleines Programm geschrieben, dass mir alle möglichen Permutationen einer Liste von Strings erzeugt, wenn ein neuer Buchstabe hinzukommt.

Java:
        LinkedList<String> pl =new LinkedList<String>();
        pl.add("0");
        pl=HelpClass.permutate(pl, '1');
        pl=HelpClass.permutate(pl, '2');
        pl=HelpClass.permutate(pl, '3');
        pl=HelpClass.permutate(pl, '4');
        pl=HelpClass.permutate(pl, '5');
        pl=HelpClass.permutate(pl, '6');
        pl=HelpClass.permutate(pl, '7');
        pl=HelpClass.permutate(pl, '8');
        pl=HelpClass.permutate(pl, '9');

Nach dem ersten Aufruf, sollte die Liste also folgende Einträge haben [01,10]. Nach dem zweiten Aufruf [201, 021, 012, 210, 120, 102].

Java:
    public static LinkedList<String> permutate (LinkedList<String> ref, char x){
        LinkedList<String> neu = new LinkedList<String>();
        int i, j,c=0;
        String s,s2;
        for (i=0; i<ref.size(); i++){
            s=ref.get(i);
            for (j=0; j<=s.length(); j++){
                if (j==0)
                    s2=x+s;
                else{
                    s2=s.substring(0,j)+x+s.substring(j); 
                }
                c++;
                neu.add(s2);
            }
        }
        System.out.println("c= "+c);
        return neu;
    }

Die Anzahl der Permutationen wächst in diesem Fall mit der Fakultät, d.h. nach dem letzten Aufruf sollte eine Liste mit 10!=3628800 Einträgen zurückgegeben werden. Genau bei diesem Durchgang erhalte ich aber folgenden Fehler:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:215)
at java.lang.StringBuilder.toString(StringBuilder.java:430)
at euler.HelpClass.permutate(HelpClass.java:46)

Der Fehler tritt also auf, wenn der String s2 aus den beiden substrings und dem char zusammengesetzt wird.
Benutze NetBeans 7.0.1 unter Mac OSX 10.6.8.

Erfolglose Versuche den Fehler zu beseitigen:
- Einsatz des Garbage Collector
- String s2 in jedem Durchlauf für j neu anlegen
- Vergrößerung der Heap Size in /Applications/NetBeans/NetBeans 7.0.app/Contents/Resources/NetBeans/bin/netbeans

Hat jemand von euch eine Idee was ich noch machen könnte? Langsam bin ich mit meinem Latein am Ende...

Schöne Grüße
torben
 
M

Marco01_809

Gast
Java Programme bekommen standard afaik maximal 256 oder 128MB, mit den Param "-Xmx" kannst du den maximalen Heap erhöhen,
auf der Konsole z.B. mittels "java -Xmx2048M -jar program.jar", wo man in Netbeans diese Params eingibt weiß ich nicht, in Eclipse geht das problemlos mittels Run/Debug-Settings -> Arguments -> VM.
 
S

SlaterB

Gast
jeder String bis zu 100 Byte, damit muss man schon rechnen, gerade bei LinkedList wo für jeden Eintrag ein neues Objekt mit Referenzen usw. benötigt wird, also allein dafür 30 Bytes und mehr, String dann vielleicht nur 70,
bei 4 Mio. jedenfalls brauchst du 400 MB Speicher..,
dann läuft das Programm auch, allerdings arg langsam, hab nach paar Minuten bei 1.5 Mio. aufgehört

ArrayList lieft danach in 5 sec durch, brauchte 'nur' 250 MB ;)
allerdings zwischendurch bisschen mehr, solange die alte Liste parallel noch vorhanden ist

@Marco01_809
64 MB soweit ich weiß/ so ist es bei mir
 
Zuletzt bearbeitet von einem Moderator:

torben

Mitglied
Java Programme bekommen standard afaik maximal 256 oder 128MB, mit den Param "-Xmx" kannst du den maximalen Heap erhöhen,
auf der Konsole z.B. mittels "java -Xmx2048M -jar program.jar", wo man in Netbeans diese Params eingibt weiß ich nicht, in Eclipse geht das problemlos mittels Run/Debug-Settings -> Arguments -> VM.

In NetBeans gehts so: Rechtsklick auf das verwendete Projekt -> Properties -> Run -> bei VM Options "-Xmx2048M" eingeben.

Vielen Dank für die Hilfe :)

@ SlaterB: Ja das Programm ist langsam, bei mir dauert es etwas mehr als 100 Sekunden. Bin für gute Ideen immer offen.
 
E

emailundlos

Gast
so kannst du das machen:

Java:
    public static char[][] perumtationen(char[] ca) {
        char[][] resul = new char[(int) Math.pow(2, ca.length)][ca.length];
        for (int i = 0; i < resul.length; i++) {
            int j = 0;
            for (int k = 0; k < ca.length; k++) {
                if (((i >> k) & 1) == 1) {
                    resul[i][j++] = ca[k];
                }
            }
        }
        return resul;
    }
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
A Java memory leakage Java Basics - Anfänger-Themen 9
B Memory in Java Java Basics - Anfänger-Themen 16
B Image Matching in Memory Minigame Java Basics - Anfänger-Themen 7
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
pinar memory spiel Java Basics - Anfänger-Themen 10
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
P Layout Manager - Welches Layout für Memory? Java Basics - Anfänger-Themen 7
S Datentypen Memory Problem Java Basics - Anfänger-Themen 12
I Memory-Spiel Feld nur einmal mischen Java Basics - Anfänger-Themen 2
O Memory Thread.sleep() Java Basics - Anfänger-Themen 5
K Memory-Spiel stecke Fest Java Basics - Anfänger-Themen 2
K Ein Memory Spiel ! Java Basics - Anfänger-Themen 6
K Memory-Spiel alle verdeckte karten aufdecken. Java Basics - Anfänger-Themen 26
T Memory Leak und der Garbage Collector Java Basics - Anfänger-Themen 21
A Memory Probleme beim Laden von thumbnails Java Basics - Anfänger-Themen 3
S memory heap problem Java Basics - Anfänger-Themen 9
J Memory Footprint von Objekten Java Basics - Anfänger-Themen 2
I Memory-Spiel Java Basics - Anfänger-Themen 2
W Servlet - out of memory Java Basics - Anfänger-Themen 7
G Memory-Spiel Java Basics - Anfänger-Themen 8
B Memory - Zufällige Anordnung von Buchstabenpaaren Java Basics - Anfänger-Themen 8
J Memory Java Basics - Anfänger-Themen 2
G Memory Projekt, Fragen über Fragen Java Basics - Anfänger-Themen 6
T Out of Memory Error Java Basics - Anfänger-Themen 7
E Heapspace out of Memory Java Basics - Anfänger-Themen 8
J Probleme mit drucken aus Java Java Basics - Anfänger-Themen 3
Gokul Java chart library suggestion for web application? Java Basics - Anfänger-Themen 2
D wie kann ich gcc aus einer .java datei heraus aufrufen? Java Basics - Anfänger-Themen 2
S Text Formatierung in Java Java Basics - Anfänger-Themen 2
B Erste Schritte yaml parsen in Java Java Basics - Anfänger-Themen 19
C Methoden Umlaute in Java Java Basics - Anfänger-Themen 18
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 3
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
G Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
G Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben