>  기사  >  Java  >  메모리에 있는 Java 객체의 구조는 무엇입니까?

메모리에 있는 Java 객체의 구조는 무엇입니까?

PHPz
PHPz앞으로
2023-04-30 13:31:141232검색

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으로 문의하시기 바랍니다. 삭제