Jvm(33),理解升级----有一点豁然开朗的的对堆栈方法区的理解
2018-09-22 21:58
211 查看
以前一直存在一个误区,就是引用数据类型放在堆中,比如说有一个student对象,引用和基本数据类型放在栈中,那其它的对基本数据类型和引用数据类型的操作的代码放在那里呢?
还有为什么会对堆设置的内存大的,不就是一个new student吗?全局的基本数据类型存放在哪里?现在我们来一一来分析这种看法:我们可能一直都在说基本数据类型是栈内存中的,也就是局部变量表,并且存储着对堆空间的引用。
现在我们再来仔细的品味这句话。
1,首先以student对象为例,它new出来的对象首先会在堆中,Student a=new
Student();这个a会在栈中,比如student里面有name age的属性,这个时候就会在堆内存中存储着这个对象,而在栈中的对a的所有的操作比如a.setage a.getage 都是对堆中 student的修改或者赋值,栈中的代码无非就是对对象的修改和赋值。
从这里我们可以看出为什么要把堆内存设置的特别大,因为它主要是放置对象的地方,多个对象是比较吃内存的,而栈中只不过是对堆内存引用对象的修改,操作的还是堆内存的。一旦方法执行完毕出栈的时候栈就释放内存了。
2,全局基本数据类型的数据类型放在那里?首先,全局基本数据类型一般不这样去设置的。因为全局的基本数据类型一般都会设置成常量的,这个时候是不允许修改的,否则每个方法都去修改的话就不知道全局基本数据类型到底是什么了。
相关文章推荐
- Jvm(27.14.2),理解升级---堆,栈,方法区
- convertView&setTag方法的一点理解
- Jvm(30),理解升级----Java中堆内存和栈内存详解
- 对ContentProvider中getType方法的一点理解
- 每天一点积累(九)---JVM前提堆栈
- Java第三课 Java中包的概念,类的说明符、方法的说明符、对象的销毁(JVM垃圾会受器的演示),Java中接口理解与掌握。
- self,super 实例方法的一点理解
- Jvm(31),理解升级----通过JVM内存模型深入理解值传递和引用传递两种方式
- convertView&setTag方法的一点理解
- 对ContentProvider中getType方法的一点理解
- JVM内存结构,堆栈和方法区分别存储的内容
- 对Interface的一点理解——为什么一个简单的方法声明可以做那么多的事
- convertView&setTag方法的一点理解
- Jvm(2),jvm堆栈方法区交互
- Jvm(32),理解升级----(挺不错的)图解深入理解JVM之JVM内存区域与内存分配
- convertView&setTag方法的一点理解
- 对ContentProvider中getType方法的一点理解
- 自己在学习Mybits的时候理解的一点sql注入的知识,以及处理的方法!
- 关于C#.Net中事件(event)、委托(delegate)和方法的一点理解
- convertView&setTag方法的一点理解