Wie vergleicht sich die Speichernutzung eines in Java geschriebenen Integer-Objekts mit der Speichernutzung eines in C ++ geschriebenen Integer-Objekts? Ist der Unterschied vernachlässigbar? Kein Unterschied? Ein großer Unterschied? Ich vermute, es ist dasselbe, weil ein int ein int ist, unabhängig von der Sprache (?)
Der Grund, warum ich dies gefragt habe, ist, dass ich gelesen habe, wie wichtig es ist, zu wissen, wann der Speicherbedarf eines Programms den Programmierer daran hindert, ein bestimmtes Problem zu lösen.
Was mich fasziniert hat, ist die Menge an Speicher, die zum Erstellen eines einzelnen Java-Objekts benötigt wird. Nehmen Sie zum Beispiel ein ganzzahliges Objekt. Korrigieren Sie mich, wenn ich falsch liege, aber ein Java-Integer-Objekt 24 Byte Speicher benötigt:
- 4 Bytes für die int-Instanzvariable
- 16 Byte Overhead (Verweis auf die Klasse des Objekts, Informationen zur Speicherbereinigung und Informationen zur Synchronisierung)
- 4 Bytes Auffüllen
Als weiteres Beispiel benötigt ein Java-Array (das als Objekt implementiert ist) mehr als 48 Byte:
- 24 Byte Header-Informationen
- 16 Bytes Objekt-Overhead
- 4 Bytes für die Länge
- 4 Bytes zum Auffüllen
- plus den Speicher, der zum Speichern der Werte benötigt wird
Wie vergleichen sich diese Speichernutzungen mit demselben Code, der in C ++ geschrieben wurde?
Früher war ich mir der Speichernutzung der von mir geschriebenen C ++ - und Java-Programme nicht bewusst, aber jetzt, da ich anfange, etwas über Algorithmen zu lernen, schätze ich die Ressourcen des Computers besser.
int
? Wenn ja, sollten Sie das mitint
Java vergleichen, nichtInteger
- solange Ihre C ++ - Ints 32 Bit sind.