Java对象内存图以及执行流程

对象内存图
在这里插入图片描述

  1. 程序执行 方法区加载Test字节码文件 包含主方法main

  2. 主方法被虚拟机自动调用执行 进到栈内存

  3. 方法区创建对象 Student 临时存储 包含 成员变量 成员方法

  4. 加载class文件Student

    1. 申明局部变量 stu1

    2. 在堆内存开辟一个新的空间7ef20235 (只要有 new 就是在堆里面开辟了一个小空间)

    3. 默认初始化值(String 类型的值 默认初始化为null , int 为 0)

    4. 显式初始化(如果有默认赋的值 则会用赋的值)

    5. 构造方法初始化(空参不必初始化,有参构造有值进行初始化)

    6. 堆内存中的地址赋值给左边的局部变量 7ef20235

      Student stu = 7ef20235
      

      stu 可以通过地址值找到堆内存中开辟的空间

  5. stu通过地址值找到name 对齐赋值 张三

  6. stu 通过地址值找到 成员方法的地址 ,通过成员方法地址调用 study() (多个对象共用同一个成员方法)

  7. stydy()加载进栈 执行输出语句

  8. 执行完毕 study() 出栈

  9. 整个 main 方法执行完毕 出栈

  10. 因为无变量指向堆内存的地址 ,堆内存地址变成垃圾 消失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值