黑马程序员技术交流社区

标题: 初学java-为什么会有栈内存和堆内存呢? [打印本页]

作者: mytongyong    时间: 2014-7-11 08:47
标题: 初学java-为什么会有栈内存和堆内存呢?
我的理解是栈内存是不是就是cpu内部的存储空间,而堆内存就是指电脑内存呢?还是都是在内存里面,只不过是一块内存定义了不同的名称呢?

作者: fantacyleo    时间: 2014-7-11 09:30
栈和堆都是内存,是人为的划分。cpu内部的存储空间是寄存器。
作者: mytongyong    时间: 2014-7-11 09:35
fantacyleo 发表于 2014-7-11 09:30
栈和堆都是内存,是人为的划分。cpu内部的存储空间是寄存器。

我想也应该是这样吧,谢啦!
作者: 黎志勇    时间: 2014-7-11 09:40
栈内存和堆内存都在内存中,都是人为划分的,不过两者的数据结构不同,栈内存的数据是先进后出(后进先出),而堆内存是无序的,顺序随意。
作者: Mr.Hao    时间: 2014-7-11 10:16
cpu的叫寄存器空间,速度最快的,堆栈都是在内存当中的
作者: 暗影流光    时间: 2014-7-11 10:47
都是内存的一块区域。只不过java有自己的划分定义。
作者: 晴儿    时间: 2014-7-11 11:32
Object obj = new Object();以上这句话,会把obj这个引用放进栈内存,再说白一点,就是这个对象的名字obj放进栈内存,栈内存运行速度较快,用于查找索引(也就是名字) 而new Object()会在堆内存中开辟一块空间给这个对象,也就是对象的实体都在堆内存中 ,堆内存速度慢但是成本低,空间较大,用以存放程序
作者: 微笑女皇    时间: 2014-7-11 11:35
学习了

作者: mytongyong    时间: 2014-7-11 11:37
晴儿 发表于 2014-7-11 11:32
Object obj = new Object();以上这句话,会把obj这个引用放进栈内存,再说白一点,就是这个对象的名字obj放进 ...

要深入理解这些东西就应该涉及到了java的编译原理了吧,以前只懂一点C语言,编译原理什么的也没学过,呵呵。




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