Marc Reichelt: kein sizeof() in Java

Beitrag lesen

Hallo MudGuard,

Die Antwort hier ist: Es gibt kein "Objekt" vom Typ Double in Java.

Doch, es gibt Objekte vom Typ Double (die Klasse Double ist von java.lang.Object abgeleitet wie jede Klasse, und Instanzen der Klasse Double sind dann die Objekte).
double mit kleinem d ist in der Tat ein primitiver Datentyp, Double mit großem D dagegen eine Klasse. (siehe auch Integer vs. int, Character vs. char, ...)

Ja, ich war etwas zu voreilig mit meiner Aussage.
Natürlich kann man Instanzen der Klasse "Double" anlegen - aber ich nahm an, dass diese dann genauso viel Speicher belegen wie ein "double"-Wert, da Java diese intern eventuell als "double" behandelt. Diese Annahme war nicht korrekt.

Den Speicherverbrauch eines Objektes muss man unter Java komplizierter berechnen - dieser Artikel beschreibt, wie es geht.

Im Prinzip muss man also nur die Größe aller Attribute berechnen. Da diese aber ebenso wieder Objekte sein können, wird das Ganze etwas komplizierter.
Summa summarum sollte eine Instanz der Klasse "Double" also 4 Byte Speicherverbrauch haben - denn sie hat ein Attribut vom Typ "double", das genau 4 Bytes im Speicher belegt. Dies lässt sich dem Quelltext der Klasse Double entnehmen.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)