黑马程序员技术交流社区

标题: java 堆与栈的区别 [打印本页]

作者: 百里青山    时间: 2016-4-5 12:40
标题: java 堆与栈的区别
一直对这两个概念比较模糊,心里不安,所以下决心好好的看了一下它。

它们都是计算机中的数据结构。

堆(heap):把堆比作一个大仓库,仓库里面可以放很多东西。当我们创建一个对象时(new XXX),首先会在堆里面开辟一块空间放置对象本身,然后再把对象的引用地址放入栈中。最后访问该对象时,先通过栈找到引用地址,然后再找到实际对象。

栈(stack): 栈/堆栈(FILO)先入后出。类似于枪的弹夹,先放入的子弹最后才打出来。弹夹最下面被称为栈低,最上面称为栈顶。 子弹压入弹夹的过程称为"进栈",子弹打出去的过程称为"出栈"。它的特点的容量小,查询速度快。一般用于存储基本数据类型变量、临时变量、局部变量和对象的引用地址。当超过该对象/变量作用域时,java就会释放该对象/变量的内存空间。如果是对象,则对象本身就成了无主(废弃)对象,java GC垃圾回收机制在运行时就会把无主对象删除,回收空间.
作者: ZTK12345    时间: 2016-4-5 22:06
分析的这么清楚。。。赞一个
作者: 1833495284    时间: 2016-4-5 22:20
顶顶顶,水水水水

作者: zapple926    时间: 2016-4-5 22:22
说的这么详细,受教了




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