黑马程序员技术交流社区

标题: Java中的栈和堆的区别是什么? [打印本页]

作者: hbk000    时间: 2015-4-7 00:48
标题: Java中的栈和堆的区别是什么?
本帖最后由 hbk000 于 2015-4-7 23:39 编辑

栈和堆的区别是什么?
为什么说栈的速度快,堆的速度慢?
JVM在处理他们的时候,有什么区别?              

作者: 黑色救护车    时间: 2015-4-7 07:31
区别:
1)栈内存用于存储各种变量及对象的引用;存储于栈内存的数据的大小和生存期是确定的,因而缺乏灵活性;
2)堆内存用于存储对象实体;在创建对象时动态分配;由于对象的生存期由程序的需求所决定,当没有引用再指向该对象的时候,垃圾回收机制会在某一时刻回收该部分内存并释放;
速度:
1)栈内存是静态分配的,并有系统底层的支持,有压栈出栈的指令,为其提供存储速度上的优势;
2)堆内存是在程序运行时动态分配的,存取较慢;
处理:
1)栈内存内的内存在数据使用完后自动释放;
2)堆内存中的对象由垃圾回收器在某一时刻回收释放
作者: 宸宸    时间: 2015-4-7 09:33
~用思维导图做了总结,楼主可以看看

堆内存与栈内存.png (148.62 KB, 下载次数: 37)

堆内存与栈内存.png

作者: chenlong    时间: 2015-4-7 09:46
好强大啊,受教了
作者: tubao1991    时间: 2015-4-7 09:52
宸宸 发表于 2015-4-7 09:33
~用思维导图做了总结,楼主可以看看

哥们!终结的精辟
作者: 宸宸    时间: 2015-4-7 09:55
tubao1991 发表于 2015-4-7 09:52
哥们!终结的精辟

;P你应该叫姐们。谢谢夸奖,总结的不是很好,但愿你们喜欢

作者: 陈佳    时间: 2015-4-7 10:00
宸宸 发表于 2015-4-7 09:33
~用思维导图做了总结,楼主可以看看

强大的总结啊,收藏了!
作者: 胡几手    时间: 2015-4-7 10:26
学习了。
作者: 古风_菜鸟    时间: 2015-6-6 13:18
好详细,了解了
作者: pizhihui    时间: 2015-6-6 13:21
太详细了,并且语言通俗易懂啊,彻底佩服!




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