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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 此间的少年 中级黑马   /  2016-10-2 09:34  /  842 人查看  /  15 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

物理地址    堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)
栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。
内存分别
    堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。栈是连续的,所以分配的内存大小要在编译期就确认,大小是固定的。
存放的内容堆存放的是对象的实例和数组。因此该区更关注的是数据的存储
栈存放:局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。
PS:
  • 静态变量放在方法区
  • 静态的对象还是放在堆
程序的可见度堆对于整个应用程序都是共享、可见的。
栈只对于线程是可见的。所以也是线程私有。他的生命周期和线程相同。

评分

参与人数 1黑马币 +1 收起 理由
toolz + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
以前经常纠结于他们两个的区别,现在终于弄明白了
回复 使用道具 举报
好分享,楼主好人
回复 使用道具 举报
学习了.....
回复 使用道具 举报
厉害 这些东西基本都没听过
回复 使用道具 举报
回复 使用道具 举报
babysa 中级黑马 2016-10-2 17:38:40
7#
简单记  new出来的都在堆内存  
回复 使用道具 举报
刘野 中级黑马 2016-10-2 20:17:11
8#
感谢分享。。
回复 使用道具 举报
。。。。。。。。。。。。
回复 使用道具 举报

方法会弹栈
回复 使用道具 举报
66666666666666666666
回复 使用道具 举报
回复 使用道具 举报
{:2_41:}大神啊  正解
回复 使用道具 举报
学到了,谢谢
回复 使用道具 举报
学习了.....
回复 使用道具 举报
所以本质还是内存??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马