Dies kann keine absolute Antwort erhalten, da es von internen Details Ihrer aktuellen JRE abhängt, die sich sehr wahrscheinlich zwischen den Versionen ändern werden.
Lassen Sie uns die Grundlagen gerade für einige 32-Bit-Beispiel JRE erhalten:
- ein
int
ist 4 Bytes = 32 Bits
- eine Referenz ist 4 Bytes = 32 Bits (wird in einem 64-Bit länger sein Java)
- eine Instanz benötigt einige Header-Bytes (möglicherweise 16 Bytes = 128 Bits) plus ihre Felder. In einigen Situationen benötigt das Layout einige zusätzliche "Auffüll" -Bytes.
Instanzen werden auf dem "Heap" erstellt, lokale Variablen auf dem "Stapel".
auf Grundlage dieser Zahlen, eine TreeNode
Instanz braucht 224 Bits:
- 128 Bits Instanz Header
- 32 Bits für
val
- 32 Bits für die
left
Referenz
- 32 Bits für die
right
Referenz
Sie erstellen 3 TreeNodes
, das sind also 672 Bytes auf dem Heap.
Darüber hinaus haben Sie eine Variable t
auf dem Stapel, eine Referenz von 32 Bits.
Noch einmal, dies sind nur Beispielzahlen, es hängt von der verwendeten JRE-Version ab.
Berücksichtigen Sie die Größe der Referenzen? –
Ich weiß nicht, wie man die Größe der Referenzen berechnet ..... Könnten Sie helfen? – user9012203
https://softwareengineering.stackexchange.com/questions/209249/what-is-the-size-of-a-reference-variable-in-java-can-it-be-berechnet –