www.mikrocontroller.net

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


Autor: Tim Hansen (timsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie viele Elemente (String) passen in ein Java Array? Integerbereich?

Gruß Tim

Autor: Stock Hecht (winkelmesser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Java-Gott (Gast)
Datum:

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

Autor: Stock Hecht (winkelmesser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Depp (Gast)
Datum:

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

Autor: Stock Hecht (winkelmesser)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stock Hecht (winkelmesser)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.