Jvm(33),理解升级----有一点豁然开朗的的对堆栈方法区的理解

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

以前一直存在一个误区,就是引用数据类型放在堆中,比如说有一个student对象,引用和基本数据类型放在栈中,那其它的对基本数据类型和引用数据类型的操作的代码放在那里呢?

还有为什么会对堆设置的内存大的,不就是一个new student吗?全局的基本数据类型存放在哪里?现在我们来一一来分析这种看法:我们可能一直都在说基本数据类型是栈内存中的,也就是局部变量表,并且存储着对堆空间的引用。

现在我们再来仔细的品味这句话。

1,首先以student对象为例,它new出来的对象首先会在堆中,Student a=new

Student();这个a会在栈中,比如student里面有name age的属性,这个时候就会在堆内存中存储着这个对象,而在栈中的对a的所有的操作比如a.setage a.getage 都是对堆中 student的修改或者赋值,栈中的代码无非就是对对象的修改和赋值。

从这里我们可以看出为什么要把堆内存设置的特别大,因为它主要是放置对象的地方,多个对象是比较吃内存的,而栈中只不过是对堆内存引用对象的修改,操作的还是堆内存的。一旦方法执行完毕出栈的时候栈就释放内存了。

2,全局基本数据类型的数据类型放在那里?首先,全局基本数据类型一般不这样去设置的。因为全局的基本数据类型一般都会设置成常量的,这个时候是不允许修改的,否则每个方法都去修改的话就不知道全局基本数据类型到底是什么了。

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值