黑马程序员技术交流社区
标题:
堆和栈的疑惑
[打印本页]
作者:
李深山
时间:
2012-3-19 21:24
标题:
堆和栈的疑惑
class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Person p = new person();
}
}
Class Person{}
堆和栈有什么变化,内存中有什么变化?
作者:
王思兰
时间:
2012-3-19 21:37
"Hello World"存放在数据区(data segment),p存放在栈内存中,指向堆内存中new出来的Person对象
作者:
马云
时间:
2012-3-19 21:42
p存放在栈中 new person()存在堆中
(画图的时候让人抢先回答了)
不明白上图
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTIwM3w4Mzk2MjE2MjQyOGZlYjg2ZWQwYjVmZmQ4ZWQ4NTliNHwxNzQwNjA0OTM1&request=yes&_f=.jpg
未命名.jpg
(28.39 KB, 下载次数: 72)
下载附件
2012-3-19 21:41 上传
作者:
李创
时间:
2012-3-19 21:43
栈(stack):是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量.
在java中,所有基本类型和引用类型都在栈中存储.栈中数据的生存空间一般在当前scopes内(就是由{...}括起来的区域).
堆(heap):是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),C中的malloc语句所产生的内存空间就在堆中.
在java中,所有使用new xxx()构造出来的对象都在堆中存储,当垃圾回收器检测到某对象未被引用,则自动销毁该对象.所以,理论上说java中对象的生存空间是没有限制的,只要有引用类型指向它,则它就可以在任意地方被使用
作者:
李飞
时间:
2012-3-19 22:34
1. new创建一个对象,放在堆内存中
2. p属于引用型,存放在栈内存中
3. hello world存放在数据区中
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2