hallo leute, ich habe folgendes Problem:
ich möchte gerne ein richtig großes boolean Array allokieren - warum sei jetzt mal egal -
jedoch kann ich nur maximal einen Index von ~63.000.000 ohne Fehler allokieren.
Ab 64.000.000 kommt der Java Heap Space Error:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Das entspricht - unter der Annahme ein boolean = ein bit Speciherverbrauch - ja nur
63.000.000 bit / (8*1000*1000) = 7,875MByte
die JVM hat folgende Parameter: -Xms512m und -Xmx1024m
mein System: WinVista Ultimate 64-bit, Quadcore T2200, 2GB-DDR3 RAM
IDE: eclipse
meinen Überlegungen zufolge, wäre so ein boolean Array eigentlich durch Integer.MAXVALUE beschränkt.
dies würde bedeuten, dass man theoretisch ein Feld der länge (2^31)-1 (=2.147.483.647) allokieren kann.
Der Speicherverbrauch würde sich auf:
2^31 bit / (8*1000*1000) = (hochgerundet) 269 MByte
ich habe auch bereits bei Sun im forum auf englisch angefragt, jedoch kam da bisher keine Antwort....???:L
Hat jemand von euch schon mal so einen Fehler gehabt und gelöst?
Vielen Dank schon mal für eure Antwort!
ich möchte gerne ein richtig großes boolean Array allokieren - warum sei jetzt mal egal -
jedoch kann ich nur maximal einen Index von ~63.000.000 ohne Fehler allokieren.
Ab 64.000.000 kommt der Java Heap Space Error:
Java:
boolean[] test = new boolean[64000000];
Das entspricht - unter der Annahme ein boolean = ein bit Speciherverbrauch - ja nur
63.000.000 bit / (8*1000*1000) = 7,875MByte
die JVM hat folgende Parameter: -Xms512m und -Xmx1024m
mein System: WinVista Ultimate 64-bit, Quadcore T2200, 2GB-DDR3 RAM
IDE: eclipse
meinen Überlegungen zufolge, wäre so ein boolean Array eigentlich durch Integer.MAXVALUE beschränkt.
dies würde bedeuten, dass man theoretisch ein Feld der länge (2^31)-1 (=2.147.483.647) allokieren kann.
Der Speicherverbrauch würde sich auf:
2^31 bit / (8*1000*1000) = (hochgerundet) 269 MByte
ich habe auch bereits bei Sun im forum auf englisch angefragt, jedoch kam da bisher keine Antwort....???:L
Hat jemand von euch schon mal so einen Fehler gehabt und gelöst?
Vielen Dank schon mal für eure Antwort!