Heap-Speicher der JVM wird gespränkt |
29.03.2010, 11:15 | Auf diesen Beitrag antworten » |
Korn-flake | Heap-Speicher der JVM wird gespränkt 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, 19:17 | Auf diesen Beitrag antworten » |
ed209 | 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 Gruß, ED209 |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|