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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 百里青山 高级黑马   /  2016-4-5 12:40  /  406 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一直对这两个概念比较模糊,心里不安,所以下决心好好的看了一下它。

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

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

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

3 个回复

倒序浏览
分析的这么清楚。。。赞一个
回复 使用道具 举报
顶顶顶,水水水水
回复 使用道具 举报
说的这么详细,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马