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

Posted qingruihappy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jvm(33),理解升级----有一点豁然开朗的的对堆栈方法区的理解相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

以上是关于Jvm(33),理解升级----有一点豁然开朗的的对堆栈方法区的理解的主要内容,如果未能解决你的问题,请参考以下文章

我对line-height及vertical-align的一点理解

JAVAOO一点心得体会

JAVAOO一点心得体会

python 3列表推导式的的一点理解!

Jvm(32),理解升级----(挺不错的)图解深入理解JVM之JVM内存区域与内存分配

Jvm(31),理解升级----通过JVM内存模型深入理解值传递和引用传递两种方式