A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝妮娜 黑马帝   /  2011-9-23 19:16  /  2386 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

栈区,堆区,方法区,这几个的关系是什么?哪位大侠能形象的解释一下,谢谢啦
比如:
person p=new person();
p在栈中,new person()在堆中,p中存储的是指向new person()的首地址。
在学习中,我好像有一个错觉,堆中的数据是通过栈内存中的数据来调用的

6 个回复

倒序浏览
黑马网友  发表于 2011-9-23 20:31:10
沙发
你可以这样记,堆内存里装所有 new出来的东西
对象是new出来的,位于堆内存,  堆内存是用来的运行期间动态分配内存的
还有就是   ,一小块内存指向一大块内存
比如定义 String s;这时候就在内存中分配一块小格 null,当s=new String("Hello World!")  也就是new出一对象才能用原来的null区域,这块内存就有了一个值,根据这个值找到一大块内存(也就是new出来的东西)

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-23 22:52:42
藤椅
栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放。栈中的变量也随之释放。
堆一般用于存放不放在当前方法栈中的那些数据,它不会随方法的结束而消失!使用new创建的对象,方法中用 final修饰的局部变量都放堆中。
其他的望他人再补充!

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-24 00:27:23
板凳
这个概念原来也不清楚,这次清楚了,谢谢啦!!!
回复 使用道具 举报
黑马网友  发表于 2011-9-24 01:14:20
报纸
你的理解足够了,咱这个阶段还是多关心具体应用实现比较好

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 锡伟兄的答案总是这么简练!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-25 18:58:56
地板
觉得对内存分配机制熟点,写代码比较优质,呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马