Forum: PC-Programmierung Maximale Anzahl Elemente in Java Array?


von Tim H. (timsen)


Lesenswert?

Wie viele Elemente (String) passen in ein Java Array? Integerbereich?

Gruß Tim

von Stock H. (winkelmesser)


Lesenswert?

Kommt drauf an. Bei alten Java- Versionen war die max. Array-Größe 
glaube ich Integer.MAXINT -4, bei neuen ist es Integer.MAXINT. Ob du 
allerdings in deinem Speicher soviele unterschiedliche Strings anlegen 
kannst, ist die Frage.

von Java-Gott (Gast)


Lesenswert?

Zur Beantwortung der Frage sind nicht genug Informationen vorhanden.
Welche Dimension hat das Array denn?

von Stock H. (winkelmesser)


Lesenswert?

Zur Beantwortung der Frage sind genug Informationen vorhanden. 
Mehrdimensionale Arrays sind in Java als Arrays von Arrays aufgebaut, 
somit existieren auf Verwaltungsebene nur eindimensionale Arrays.

von Depp (Gast)


Lesenswert?

Wen interessiert diese ominöse Verwaltungsebene?
Zur Beantwortung der Ursprungsfrage liegen in der Tat nicht genügend 
Informationen vor.

von Stock H. (winkelmesser)


Lesenswert?

Die Strings werden bekanntlich in einem Pool gespeichert*, und somit 
belegen gleiche Strings nur den Speicher eines Literals. Du kannst also 
durchaus das komplette Array mit Strings füllen, ohne eine 
OutOfMemoryException zu bekommen.

*Es sei denn, man erzeugt explizit einen neuen String

von Johannes S. (johanness)


Lesenswert?

Stock Hecht wrote:
> Kommt drauf an. Bei alten Java- Versionen war die max. Array-Größe
> glaube ich Integer.MAXINT -4, bei neuen ist es Integer.MAXINT. Ob du
> allerdings in deinem Speicher soviele unterschiedliche Strings anlegen
> kannst, ist die Frage.

Eigentlich wirds schon knapp, wenn man das leere Array anlegt, bei 
meiner letzten Messung mit dem Original-Sun-JRE1.3 unter Windows lag der 
Speicherbedarf bei 4 Byte pro Eintrag, und das fürs leere Array. Also 
falls deine Java VM nicht grad 8GB beanspruchen kann stößt du da schon 
an die Grenze...

von Stock H. (winkelmesser)


Lesenswert?

OK, ich habe das mal mit Java6 und Groovy getestet:
def arr = new String[java.lang.Integer.MAX_VALUE-5]
bringt einen OutOfMemomryError. Mit
java -Xmx ...
setzt man den Heap auf das Maximum, kannst mal ausprobieren, ob es dann 
funktioniert. Allerdings ist das (der Heapspace) dann ein Limit deiner 
Plattform, und nicht von der JVM!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.