黑马程序员技术交流社区

标题: java中几个存储区的问题 [打印本页]

作者: 郝妮娜    时间: 2011-9-23 19:16
标题: java中几个存储区的问题
栈区,堆区,方法区,这几个的关系是什么?哪位大侠能形象的解释一下,谢谢啦
比如:
person p=new person();
p在栈中,new person()在堆中,p中存储的是指向new person()的首地址。
在学习中,我好像有一个错觉,堆中的数据是通过栈内存中的数据来调用的
作者: 匿名    时间: 2011-9-23 20:31
你可以这样记,堆内存里装所有 new出来的东西
对象是new出来的,位于堆内存,  堆内存是用来的运行期间动态分配内存的
还有就是   ,一小块内存指向一大块内存
比如定义 String s;这时候就在内存中分配一块小格 null,当s=new String("Hello World!")  也就是new出一对象才能用原来的null区域,这块内存就有了一个值,根据这个值找到一大块内存(也就是new出来的东西)
作者: 匿名    时间: 2011-9-23 22:52
栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放。栈中的变量也随之释放。
堆一般用于存放不放在当前方法栈中的那些数据,它不会随方法的结束而消失!使用new创建的对象,方法中用 final修饰的局部变量都放堆中。
其他的望他人再补充!
作者: 匿名    时间: 2011-9-24 00:27
这个概念原来也不清楚,这次清楚了,谢谢啦!!!
作者: 匿名    时间: 2011-9-24 01:14
你的理解足够了,咱这个阶段还是多关心具体应用实现比较好
作者: 匿名    时间: 2011-9-25 18:58
觉得对内存分配机制熟点,写代码比较优质,呵呵




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