1. Der Objektheader ist in MarkWord und KlassPoint unterteilt.
MarkWord (Markierungsfeld): Der HashCode des Objekts wird standardmäßig gespeichert und ersetzt das Alter und die Positionsinformationen der gesperrten Markierung. Der eigene Speicherplatz wird entsprechend dem Status des Objekts wiederverwendet, d. h. die in MarkWord gespeicherten Daten ändern sich, wenn sich die Position der Sperrmarkierung ändert.
KlassPoint (Typzeiger): Der Zeiger eines Objekts auf seine Klassenmetadaten. Die virtuelle Maschine verwendet diesen Zeiger, um zu bestimmen, zu welcher Klasse das Objekt gehört.
2. Instanzdaten. In diesem Teil werden hauptsächlich Dateninformationen und Informationen zur übergeordneten Klasse gespeichert.
3. Ausrichten und füllen. Da die virtuelle Maschine erfordert, dass die Startadresse des Objekts ein ganzzahliges Vielfaches von 8 Bytes ist, sind die Auffülldaten nicht unbedingt vorhanden, sondern nur zur Byte-Ausrichtung.
Ein leeres Objekt belegt aufgrund der Ausrichtung und Auffüllung 8 Bytes. Eine Ausrichtung und Auffüllung von weniger als 8 Bytes hilft uns, es automatisch zu vervollständigen.
Instanzen
public class TestStudent { public static void main(String[] args) { int n = 10; //栈存储 int m = 10; //栈存储 Student stu = new Student(); //属性赋值 stu.name="张三"; System.out.println(stu.name); //null 张三 System.out.println(stu.age); //0 //调用 String name = "ls"; //局部变量(常量池) String aaaa="ls"; String pwd = "123"; stu.login(name,pwd); System.out.println("name:"+name); //ls System.out.println("执行"); } } class Student { // 属性 String name; int age; //用户登录 // String userName; // String pwd; public void login(String userName,String pwd){ System.out.println(userName+"===="+pwd); //ls 123 } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } }
Das obige ist der detaillierte Inhalt vonWie ist die Struktur von Java-Objekten im Speicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!