Maximale Anzahl Elemente in Java Array?

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
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...
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.