Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Technische Informatik » Heap-Speicher der JVM wird gespränkt » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Heap-Speicher der JVM wird gespränkt
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Korn-flake
Grünschnabel


Dabei seit: 29.03.2010
Beiträge: 1

Heap-Speicher der JVM wird gespränkt Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo Forum Mitglieder!
Ich habe folgendes Problem !
Also ich erstelle eine Wahrheitstabelle ( ein 2dimensionales Array ). Man kann im Konstruktor die Länge der ersten Dimension übergeben. und eine Methode berechnet die Länge der 2 dimension( A(x) = 2^n ).

public TruthTable(int length){
tableArray = new String[ length ][ calculateExpLinear( length ) ];
}

public static int amount ;

public static int calculateExpLinear( int length1 ){
amount = 1;
for (int i = 0; i < length1; i++) {
amount *= 2 ;
}
return amount;
}
So jetzt ist das Problem,dass bei einer Tabellengröße ab 2^20 ich die Fehlermeldung ausgegeben bekomme "java.lang.OutOfMemoryError: Java heap space" at WerteT.LookUpTable.<init>(LookUpTable.java:19) -> wo die Parameter im Konstruktor übergeben werden!

Meine Ideen:
Zu erst dachte ich es liegt an meiner rekursiven Berechnung,deshalb war ich noch verwunderter,als ich dies Lineare-Methode schrieb und er immer noch den Fehler ausgab. Ich weiß eigentlich garnicht warum er so viel speicher neötigt ????!!!!!!!!!!!!!
Im i-net fand ich dne Hinweis,dass man irgendwo in der java api was umstellen kann(mehr speicher zur Verfügung stellen).
Aber geht das Problem nicht auhc anders zu beheben ?
Bzw falls es keine andere Lösung gibt,kann mir jemand erklären wie das mit der Speicherfreigabe funktioniert? Aber eine andere Lösung wäre mit lieber!

gruß Korn-flake
29.03.2010 11:15 Korn-flake ist offline E-Mail an Korn-flake senden Beiträge von Korn-flake suchen Nehmen Sie Korn-flake in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Naja du machst ein Array der Groesse 20*2^20. Ich weiß nicht wieviel Speicher eine einzelne Referenz braucht, aber ich schätze 4 oder 8 Byte was dann zu einer etwa 80 oder 160 MB grossen Speicher-struktur führen sollte.
Standardmässig hat Java wohl 128 MB Heap, was man jedoch beim aufruf einstellen kann.
(http://hausheer.osola.com/docs/5)

Jedoch musst du bedenken dass du auch noch Speicherplatz für die Strings selber brauchst.
Verwunderlich finde ich die Fehlermeldung auf jeden Fall nicht, 2 hoch 20 ist einfach keine ganz kleine Zahl smile

Gruß,
ED209
29.03.2010 19:17 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Technische Informatik » Heap-Speicher der JVM wird gespränkt