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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ssx0101 中级黑马   /  2012-10-25 21:38  /  1308 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请教栈和堆的有关知识

3 个回复

倒序浏览
栈中存放的是方法和变量,堆中存放对象如(new出来的对象)存放在堆中,栈中的内容先进后出,堆中内容先进先出。堆和栈都位于内存中
回复 使用道具 举报
  1.栈:位于通用的 RAM (随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆  栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存 方式,仅次于寄存器。创建程序时,Java 编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活 性,所以尽管有些Java 数据要保存在堆栈里——特别是对象引用,但Java 对象并不放到其中。
2. 堆:一种通用的内存池(也在 RAM 区域),其中保存了Java 对象。和栈不同,“堆”最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要 在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可 。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!
回复 使用道具 举报
这是我从百度下载的一点关于他们的区别,你可以参考一下,希望对你有帮助

java中堆和栈的区别.pdf

290.86 KB, 下载次数: 102

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马