Hey,
Heute hat ein Kollege behauptet, dass byte short und int gleich viel Speicher belegen, da es theoretisch zwar einen Unterschied gibt, Java allerdings nur mit 4-Byte Chunks als kleinste Einheit umgehen kann. Das wär mir neu?! Ich hab jetzt ganz kurz über Runtime#free/maxMemory getestet mit einem int-Array und einem byte-Array, beide 1 Mio Slots.
das int-Array belegt 4.000.016 byte, das byte-Array 1.000.016 Million. Ist für mich auch logisch denn ein int belegt 4 byte und ein byte belegt.. nun ja
Und die 16 kommen wohl vom Overhead des Arrays selbst. edit: Ja und short-Array belegt 2.000.016, passt also auch.
Bevor ich morgen zu dem hinrenn und ihn zur Sau mach wollte ich aber doch nochmal nachfragen. Immerhin ist das Testen der Speicherbelegung ja so ne Sache - man kann das jetzt nicht auf's byte genau nachvollziehen (Mach ich das Array 10 Mio Slots groß kommen die selben Werte heraus, bei 100 Mio Slots kommt sogar eine Negativ-Belegung raus, d.h. er hat mit dem Anlegen des Arrays sogar Speicher gewonnen.. :autsch
Also wie is das nun. Ist da vllt doch etwas dran, und ich hab ihn nur falsch verstanden bzw er sich schlecht ausgedrückt, oder habt ihr davon auch zum ersten mal gehört? Hat da jemand detaillierte Lektüre? Ich kenne halt nur die typischen Tabellen wo ja eig. auch klar drinsteht dass die unterschiedlich viel Speicher belegen.
lg
Heute hat ein Kollege behauptet, dass byte short und int gleich viel Speicher belegen, da es theoretisch zwar einen Unterschied gibt, Java allerdings nur mit 4-Byte Chunks als kleinste Einheit umgehen kann. Das wär mir neu?! Ich hab jetzt ganz kurz über Runtime#free/maxMemory getestet mit einem int-Array und einem byte-Array, beide 1 Mio Slots.
das int-Array belegt 4.000.016 byte, das byte-Array 1.000.016 Million. Ist für mich auch logisch denn ein int belegt 4 byte und ein byte belegt.. nun ja
Bevor ich morgen zu dem hinrenn und ihn zur Sau mach wollte ich aber doch nochmal nachfragen. Immerhin ist das Testen der Speicherbelegung ja so ne Sache - man kann das jetzt nicht auf's byte genau nachvollziehen (Mach ich das Array 10 Mio Slots groß kommen die selben Werte heraus, bei 100 Mio Slots kommt sogar eine Negativ-Belegung raus, d.h. er hat mit dem Anlegen des Arrays sogar Speicher gewonnen.. :autsch
Also wie is das nun. Ist da vllt doch etwas dran, und ich hab ihn nur falsch verstanden bzw er sich schlecht ausgedrückt, oder habt ihr davon auch zum ersten mal gehört? Hat da jemand detaillierte Lektüre? Ich kenne halt nur die typischen Tabellen wo ja eig. auch klar drinsteht dass die unterschiedlich viel Speicher belegen.
lg
Zuletzt bearbeitet: