黑马程序员技术交流社区

标题: 栈内存和堆内存之分? [打印本页]

作者: 黑马新人    时间: 2014-11-23 14:10
标题: 栈内存和堆内存之分?
栈内存中存储的是方法中的变量,当程序结束就释放。而堆内存中存储的是对象,只有不被引用时才会销毁。。是这样吗
作者: 迷失的小Z    时间: 2014-11-23 15:49
不同代码块中的变量的生命周期是不一样滴,堆内存中的对象没有引用是会便成垃圾滴,会被自动回收,当然也可以被手动回收……
作者: 依米阳光    时间: 2014-11-23 22:30
共同学习:
1.所有的基本数据类型(值类型)全部存储在栈里面。
2.引用类型,他的实体存储在堆里面,而他的引用存储在栈里面。
3.对象的所有属性的值如果不是单例或者静态的,都存储在堆里面。
4.静态类型的成员一般存储在静态存储区域中。
垃圾回收:对于内存回收机制系统都有自己的算法,即使当前对象没有任何地址指向它,这个对象所占用的内存也不会立刻被垃圾回收器回收。
作者: theking    时间: 2014-11-24 00:16
水水贴!又学到了一点知识!
作者: 夜海    时间: 2014-11-24 00:21
栈内存中变量是方法结束就消失吧 。。。。。
作者: 米家小九    时间: 2014-11-24 06:24
共同学习
作者: Dr.Sparta    时间: 2014-11-24 07:34
大神们回答的很详细了,谈一点自己的看法,堆里存的是实体,有地址值,不用时jvm会调用gc进行回收(或手动回收);而栈中的存的大都是局部变量,用完会自动释放。
作者: scoto263    时间: 2014-11-24 09:37
依米阳光 发表于 2014-11-23 22:30
共同学习:
1.所有的基本数据类型(值类型)全部存储在栈里面。
2.引用类型,他的实体存储在堆里面,而他的引 ...

大神回答的挺精辟的,学习了。




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