黑马程序员技术交流社区

标题: 请教栈和堆的有关知识 [打印本页]

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

java中堆和栈的区别.pdf

290.86 KB, 下载次数: 92






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