对象内存图------单个对象内存图

单个对象内存图

相关代码:

在这里插入图片描述

内存示意图:

在这里插入图片描述

首先知道有三个内存空间,分别是堆内存、栈内存、方法区。

1.有mian方法的类的字节码文件(.class)先进入方法区。

2.main方法调用进入栈内存。

3.首先声明Student类型的s变量进入栈内存。
因为引用Student类,此时把Student类的字节码文件也放入方法区,跟着放入的有成员变量、成员方法

4.此时new Student创建一个Student类的实例对象,在堆内存中开辟空间,并根据方法区的Student类的字节码文件将成员变量也存入堆内存(此时成员变量的初始值为默认值),成员方法不进入堆内存,但成员方法的地址进入堆内存存放

5.new完成后开辟空间的地址返回栈内存告诉s

6.接着打印s的地址

7.再打印成员变量s.name和s.age。对象s根据地址找到堆内存,输出记录着的成员变量值

8.然后给name、age赋值。对象s根据地址找到堆内存,给成员变量重新赋值

9.再次打印成员变量s.name和s.age。对象s根据地址找到堆内存,输出成员变量的值

10.最后调用成员方法。对象s根据地址找到堆内存,再根据成员方法的地址找到方法区中字节码文件中的read方法

11.将read方法加载到栈内存中去运行,打印内容。

12.方法打印完后退出栈

13.最后main方法也退出栈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fy_1852003327

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值