Java对象在内存中的结构

美女程序员鼓励师

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对象在内存中的结构,希望对大家有所帮助。更多Java学习指路:Java基础

本教程操作环境:windows7系统、java10版,DELL G3电脑。

以上是 Java对象在内存中的结构 的全部内容, 来源链接: utcz.com/z/545639.html

回到顶部