Long und Frage zum Speicherplatz eines Arrays

glitsch

Aktives Mitglied
Hi zusammen,
ich muss feststellen, wie viel Bytes ein Array mit Long-Werten gefüllt ausmacht. Mein Array ist vom Typ long und gefüllt mit je 10 Werten die dreistellig sind: {500,501,502 etc.}. Wie sieht meine Rechnung aus? Kann mir jemand kurz die Rechnung erklären.

Danke für die Hilfe!:)
 

pro2

Bekanntes Mitglied
Jop, wären dann genau 8 Byte * 10 = 80 Byte. Die Länge der Werte spielt ja absolut keine Rolle, einzig der Datentyp ist das, was zählt.

boolean - 1 Bit
byte - 1 Byte
char - 2 Byte
short - 2 Byte
int - 4 Byte
long - 8 Byte
float - 4 Byte
double - 8 Byte

Tatsächlich wird aber in Java ein int für alle Datentypen, von den größeren ausgenommen, reserviert.
 
Zuletzt bearbeitet:

Ark

Top Contributor
Außerdem werden doch noch 4 Byte für den "Pointer" auf das Array verwendet, oder nicht?
Jein. Das Array selbst speichert noch ein paar Metainformationen, etwa die Länge des Arrays, und außerdem kommt da noch der "Header" hinzu, den jedes andere Objekt auch hat.

Die Bytes zur Referenzierung des Arrays (also die Referenz) kostet auch noch mal Speicher, vielleicht 4 oder 8 Bytes (gerade keine Ahnung, ob das z.B. davon abhängt, ob das in einer 32-Bit-JVM oder einer 64-Bit-JVM läuft). Aber diese Referenzen werden dort gespeichert, wo eben die Referenzen liegen (d.h., für lokale Variablen auf dem Stack, für Felder eines Objektes an einer entsprechenden Position auf dem Heap). Dafür kann das Array selbst nichts.

Ark
 

Lumaraf

Bekanntes Mitglied
Tatsächlich wird aber in Java ein int für alle Datentypen, von den größeren ausgenommen, reserviert.

Für die Daten auf dem Stack stimmt das so, aber innerhalb von Objekten wird meistens nur der Platz belegt der für den Datentypen notwendig ist. Durch das Alignment der Werte innerhalb der Objekte kann es aber durchaus so vorkommen. Außerdem belegen Objekte immer ein vielfaches von 8 Bytes.

Jein. Das Array selbst speichert noch ein paar Metainformationen, etwa die Länge des Arrays, und außerdem kommt da noch der "Header" hinzu, den jedes andere Objekt auch hat.

Der Header besteht aus einer Referenz auf den Typen (je nach System und VM-Einstellung 4 oder 8 Bytes) und 4 Bytes für den identityHashCode. Bei Arrays kommt dazu nur noch die Länge von 4 Bytes dazu.
 

glitsch

Aktives Mitglied
10*8 Bytes + 4 Bytes Länge/Pointer aufs Array = 84 Bytes deckt sich mit meiner Lösung. Jetzt hab ich kapiert, wieso 84 Bytes. :applaus:
 

Ark

Top Contributor
10*8 Bytes + 4 Bytes Länge/Pointer aufs Array = 84 Bytes deckt sich mit meiner Lösung.
Na ja, "Länge" und "Pointer" sind mal zwei völlig verschiedene Sachen. Wahrscheinlich geht's um den "Netto"-Speicherverbrauch, also die reine "Nutzlast" des Arrays, und das sind eben nur die Länge des Arrays (4 Bytes) plus Größe von long (8 Bytes) mal Länge des Arrays (10): 4 Bytes + 8 Bytes * 0 = 84 Bytes.

Soll heißen: Referenzen auf das Array sollte man nicht mitzählen. (Der Overhead spielt erst ab einer gewissen Anzahl der Referenzen und/oder Objekte eine Rolle.)

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Frage Long Wert in Java Java Basics - Anfänger-Themen 1
S Long und Float Frage Java Basics - Anfänger-Themen 2
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
javapingu Hex String zu long Java Basics - Anfänger-Themen 2
J Long Typ Java Basics - Anfänger-Themen 4
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
O Long[] in long Java Basics - Anfänger-Themen 3
D Compiler-Fehler Java long und int Java Basics - Anfänger-Themen 1
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
Hanschyo String kann nicht Werte von Long annehmen Java Basics - Anfänger-Themen 2
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
J Datentypen Literal überschreitet long-Range, dennoch als long an Variable übergeben Java Basics - Anfänger-Themen 9
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
A Long in BigInteger Java Basics - Anfänger-Themen 3
T long wird ohne Nachkommastellen ausgegeben Java Basics - Anfänger-Themen 5
S OOP long prüfen Java Basics - Anfänger-Themen 5
B map.remove(long) Java Basics - Anfänger-Themen 5
G Rechnen mit Long Variablen Java Basics - Anfänger-Themen 4
N Zufälliger Long Java Basics - Anfänger-Themen 15
SheldoN Zahlen die über long-Wert hinausragen Java Basics - Anfänger-Themen 4
H TreeMap<> statt TreeMap<Long, String> Java Basics - Anfänger-Themen 2
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
G Long oder int Vorzeichen entfernen Java Basics - Anfänger-Themen 3
M Datentypen Calender TimeInMillis - long number erzeugen? Java Basics - Anfänger-Themen 2
D Konvertierung UnsignedInt zu long Java Basics - Anfänger-Themen 5
A long Wert in hexadezimales Array umwandeln Java Basics - Anfänger-Themen 3
A string bitweise in long umwandeln Java Basics - Anfänger-Themen 7
A Konvertierung String-->hex-->long Java Basics - Anfänger-Themen 7
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Datentypen Ein long[]-Array. Java Basics - Anfänger-Themen 5
G Datentypen Eclipse akzeptiert 'long' nicht Java Basics - Anfänger-Themen 2
N Mit long rechnen Java Basics - Anfänger-Themen 2
W Long to String Java Basics - Anfänger-Themen 7
B Long als Eingabeaufforderung Java Basics - Anfänger-Themen 3
H Long (64Bit) in 2 int (32Bit) zerlegen Java Basics - Anfänger-Themen 2
N Datentypen Wurzel aus long ziehen Java Basics - Anfänger-Themen 4
O Runden - x/100 liefert long zurück Java Basics - Anfänger-Themen 7
A mdoulo methode mit long Java Basics - Anfänger-Themen 9
Binary.Coder Skalarprodukt mittels long und binärzahlen Java Basics - Anfänger-Themen 5
A Long zu Double Java Basics - Anfänger-Themen 4
B (long)1e9 Java Basics - Anfänger-Themen 6
V wozu ist das 'L' beim long notwendig ? Java Basics - Anfänger-Themen 5
J Länge eines long wertes Java Basics - Anfänger-Themen 13
S Division von long! Java Basics - Anfänger-Themen 4
Spot84 long von getCreationDate in String umwandeln Java Basics - Anfänger-Themen 4
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G long[] aus SQL-Abfrage Java Basics - Anfänger-Themen 3
G String in Long casten Java Basics - Anfänger-Themen 2
N long geteilt durch long gleich null ? Java Basics - Anfänger-Themen 8
G int gleich long ? Java Basics - Anfänger-Themen 2
J A Long. way Java Basics - Anfänger-Themen 10
T Probleme mit long Java Basics - Anfänger-Themen 2
G NumberFormatException bei double und long Java Basics - Anfänger-Themen 11
G long zu kurz Java Basics - Anfänger-Themen 5
G long datum splitten in day etc Java Basics - Anfänger-Themen 23
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G Zahlen >long verwenden Java Basics - Anfänger-Themen 7
G Problem beim rechenen mit long Java Basics - Anfänger-Themen 3
G long oder double Java Basics - Anfänger-Themen 15
C Long -> String -> ArrayList adden -> Exception Java Basics - Anfänger-Themen 4
M long in byte[] konvertieren und wieder zurück Java Basics - Anfänger-Themen 2
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
M Quersumme einer long zahl Java Basics - Anfänger-Themen 4
M long Datentyp effizient mit Daten füllen Java Basics - Anfänger-Themen 2
F Long umwandeln und auf 2 Dezimalen runden? Java Basics - Anfänger-Themen 14
G long in string Java Basics - Anfänger-Themen 6
G long-Zeitwert Java Basics - Anfänger-Themen 11
P "Line too long" bei der Generierung des jars. Java Basics - Anfänger-Themen 5
B String <> long --- Das ist doch nicht inkonvertibel? Java Basics - Anfänger-Themen 4
F Long zu 2 int und zurück Java Basics - Anfänger-Themen 3
G Hexadezimalzahl von String in Long umwandeln Java Basics - Anfänger-Themen 3
P von long zu int umwandeln? Java Basics - Anfänger-Themen 3
A formatieren long(bytes) -> String Java Basics - Anfänger-Themen 2
T long in Vector speichern Java Basics - Anfänger-Themen 16
G "cannot convert from long to int" - problem Java Basics - Anfänger-Themen 9
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
M long nach String casten Java Basics - Anfänger-Themen 2
N x.toString(x); umwandlung von long in String Java Basics - Anfänger-Themen 3
P Wie mach ich aus Int ein Double oder Long ? Java Basics - Anfänger-Themen 6
N unsigned int to long Java Basics - Anfänger-Themen 5
J Frage zum Quellcode - Zusammhänge und Ablauf. Java Basics - Anfänger-Themen 2
D Erste Schritte Frage eines absoluten Anfängers Java Basics - Anfänger-Themen 3
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben