In diesem Artikel wird die Methode zur Berechnung vorgelegt, wie viel Raum -Java -Objekte einnehmen. Es wird Ihnen als Referenz mit Ihnen geteilt. Der spezifische Inhalt ist wie folgt
1. Objektkopf
Es gibt mindestens zwei Wörter am Kopf des Objekts. Wenn es sich um ein Array handelt, sind drei Wörter wie folgt:
Ii. Regeln
Zunächst sind jedes Objekt 8 Bytes ausgerichtet, und die Eigenschaften werden in der Reihenfolge von [Long, Double], [int, Float], [Char, Short], [Byte, Boolean] und Referenz gespeichert. Zum Beispiel:
public class test {byte a; int b; boolean c; lang d; Objekt e;}If the properties of this object are stored in order, the space to be occupied is: head(8) + a(1) + padding(3) + b(4) + c(1) + padding(7) + d(8) + e(4) + padding(4) = 40. But according to this rule, we get: head(8) + d(8) + b(4) + a(1) + c(1) + padding(2) + e(4) + Polsterung (4) = 32. Sie können sehen, dass es viel Platz spart.
Wenn es um Erbschaftsbeziehungen geht, gibt es eine Grundregel: Zuerst werden die Mitglieder in der Elternklasse gespeichert und dann die Mitglieder in der Unterklasse gespeichert. Zum Beispiel:
Klasse A {long a; int b; int c;} Klasse B erweitert A {long d;}Auf diese Weise sind Ordnung und Raum besetzt wie folgt: Kopf (8) + A (8) + B (4) + C (4) + D (8) = 32. Was ist also, wenn die Attribute in der übergeordneten Klasse nicht genug acht Bytes sind? Dies gibt eine neue Regel: Wenn das Intervall zwischen dem letzten Mitglied der Elternklasse und dem ersten Mitglied der untergeordneten Klasse für 4 Bytes nicht ausreicht, muss sie beispielsweise auf die Grundeinheit von 4 Bytes erweitert werden:
Klasse A {Byte A;} Klasse B erweitert A {Byte B;}Dann ist der zu diesem Zeitpunkt besetzte Raum wie folgt: Kopf (8) + A (1) + Polsterung (3) + B (1) + Polsterung (3) = 16. Offensichtlich ist diese Methode eher verschwenderisch, also gibt es also: Wenn das erste Mitglied der Unterklasse doppelt oder lang ist und die übergeordnete Klasse nicht 8 Bytes verbraucht, werden die Regeln nicht in den Space untergebracht.
Klasse A {Byte A;} Klasse B erweitert A {long b; kurz C; Byte d;}Der zu diesem Zeitpunkt besetzte Raum ist wie folgt: Kopf (8) + A (1) + Polsterung (3) + C (2) + D (1) + Polsterung (1) + B (8) = 24.
Das obige ist die Methode, um zu berechnen, wie viel Raum -Java -Objekte einnehmen. Ich hoffe, es wird für alle hilfreich sein, Java -Programme zu lernen.