首頁  >  文章  >  Java  >  Java物件在記憶體中的結構是什麼

Java物件在記憶體中的結構是什麼

PHPz
PHPz轉載
2023-04-30 13:31:141194瀏覽

1、物件頭,分為MarkWord和KlassPoint。

MarkWord(標記欄位):預設儲存物件的HashCode,取代年齡和鎖定標記位置資訊。它會根據物件的狀態重複使用自己的儲存空間,也就是說,MarkWord中儲存的資料會隨著鎖定標記位置的變化而改變。

KlassPoint(類型指針):物件指向其類別元資料的指針,虛擬機器透過該指針確定該物件屬於哪一類。

2、實例資料。這部分主要是儲存資料資訊和父類資訊。

3、對齊填滿。因為虛擬機器要求物件的起始位址是8位元組的整數倍,所以填充資料不一定存在,只是為了位元組對齊。

一個空物件佔8個位元組,是因為對齊填滿的關係,不到8個位元組對齊填滿會幫助我們自動完成。

實例

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);
}
}

以上是Java物件在記憶體中的結構是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除