Java对象在内存中的结构是什么
发表于:2024-11-23 作者:热门IT资讯网编辑
编辑最后更新 2024年11月23日,这篇"Java对象在内存中的结构是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
这篇"Java对象在内存中的结构是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"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); //lsSystem.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对象在内存中的结构是什么"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。