Java内存图的学习

Java内存图的学习
在这里插入图片描述
方法区:存放代码片段,静态代码块(static修饰的变量),常量池(JDK1.8以前)。
堆内存空间:存放对象,元数据空间(JDK1.8以后)。
栈内存空间:存放方法栈针,局部变量。操作:方法压栈,方法弹栈。
栈内存中的引用类型变量存在于栈中,但它的实际的值来自于堆中。它仅保存堆中的对象的首地址,也就是这个引用类型变量在栈中引用了堆中的对应类型的对象。
一个引用类型对象的举例:

Person per = new Person();

假设这句代码出现在方法体中,那:

1:包含这个方法体的类首先被加载到方法区中,各项常量存入常量区。

2:先在栈中执行main方法,并压栈。方法体本身被压栈进虚拟机栈;

3:“Person per”将会反映到虚拟机栈的本地变量表中。

4:而“new Person()”将会反映到Java 堆内存空间中,形成一块存储了Person类型所有实例数据值的结构化内存,这块内存的地址存储在虚拟机栈。再将这块内存的首地址传向栈内存空间中的,当栈中per运行时就会通过地址找到堆中。当各个方法顺序执行完,就会按顺序弹栈。堆内存空间中不再使用的内存需要通过其他方法自行清理。
(本人是在java求学路上的一棵小草,如有错误的地方,感谢斧正!)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值