黑马程序员技术交流社区

标题: 栈内存,堆内存,方法区,分别都存的是什么 [打印本页]

作者: 黑马小成    时间: 2015-4-8 23:44
标题: 栈内存,堆内存,方法区,分别都存的是什么
我只知道堆里可以存对象,数组,还有就是成员变量在堆内存,局域变量在栈内存,这个有点不太理解
作者: 奋斗的黑马    时间: 2015-4-9 08:20
这里边是一个图,,不知道你能不能看懂,,不行的话,在多看看Java基础视频中的代码内存分析

未命名.rar

3.63 KB, 下载次数: 750


作者: zhy934453950    时间: 2015-4-9 08:50
内存分为堆区和栈区,堆区用来放实体(对象、数组啥的,使用完毕后不会自动消失),栈区用来存放局部变量(就是在函数比如:main函数,或是类似for循环的语句中定义的都算局部变量)
作者: 幕丶落    时间: 2015-4-9 09:26
栈内存 存放局部变量
对内存 存放成员变量
方法区 存放静态的
我是这么理解的,也不知道对不对
作者: clinber    时间: 2015-4-9 09:52

栈内存 存放全局变量
堆内存 存放局部变量
方法区 存放静态变量
作者: 执梦而行    时间: 2015-4-9 10:15
栈内存:存储的是局部变量,数据一使用完,会自动在内存中释放。
堆内存:存储的是所有new出来的。用完不会立即释放,要等到垃圾回收器回收,堆内存中有垃圾回收机制
方法区:是用来存储方法的,String字符串常量池
作者: caotierong    时间: 2015-4-9 10:24
栈内存里面的东西一旦使用完毕就会立马被释放,堆内存里面的东西使用完了则会等待垃圾回收机制来收它,而方法区又叫静态区,它里面的东西都是整个程序永远唯一的东西!所以说他们各自所存的变量和变量的作用域有关系。
作者: 东东西西    时间: 2015-4-9 10:52
是有点 搞混淆
作者: showdy    时间: 2015-4-9 10:59
不同内存区域的功能和特点:
栈区:存放局部变量(变量名,对象的引用等)特点:内存随着函数的调用而开辟,随着函数调用结束而释放。
堆区:存放对象(也就是new出来的东西)特点:可以跨函数使用,每个对象有自己对应的存储空间。
方法区:静态域:存放在对象中用static定义的静态成员。
                常量池:存放常量。(常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。)
                  方法:
本地方法区:跟系统相关的方法;
寄存器:由cpu执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2