码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-22 22:24:38      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:get   栈内存   有一个   set   修改   升级   它的   分析   多个   

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

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

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

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

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

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

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

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

标签:get   栈内存   有一个   set   修改   升级   它的   分析   多个   

原文地址:https://www.cnblogs.com/qingruihappy/p/9691402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!