JVM内存模型

JVM中存在的空间

  • 栈:
    • 方法运行时进入的内存,里面还会存储程序中的局部变量
  • 堆:
    • new出来的对象都存在于该内存
  • 方法区:在JVM规范中该区域属于堆,但实现中不属于堆
    • 字节码文件加载时进入的内存

内存模型

在这里插入图片描述

加载字节码文件

在这里插入图片描述

  • demo_Memory:静态主方法main进入方法区中的demo_Memory.Class中的静态方法区中
  • Student:name age 进入student.class中的非静态区中;静态成员变量school进入静态方法区,初始化值为null(静态成员变量特性);然后由于有赋值所以将null替换为所赋的值;加载非静态方法show()

运行程序

在这里插入图片描述

  • 运行程序main方法进栈:程序开始执行 Student s = new Student();
    • 堆内存中开辟一块空间存放student对象并将其地址值赋值给s;
    • 堆内存中name初始化为null,age初始化为0;
    • 由于有赋值则用值替换初始值;
    • 成员方法地址指向方法区中的方法内存地址;
    • 调用show()方法:show()方法进栈并输出结果
      在这里插入图片描述
  • 再次创建一个Student对象无需加载字节码文件;直接在堆中再开辟一块儿空间储存新的对象,步骤相同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值