面试问java里堆和栈的区别,怎么说

[复制链接]
查看11 | 回复3 | 2008-12-22 00:08:14 | 显示全部楼层 |阅读模式
面试问java里堆和栈的区别,怎么说

回复

使用道具 举报

千问 | 2008-12-22 00:08:14 | 显示全部楼层
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等 指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时 动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类 型的变量(,int, short, long, byte, float, double, bo...
回复

使用道具 举报

千问 | 2008-12-22 00:08:14 | 显示全部楼层
1.申请方式
stack:
由系统自动分配。
例如,声明在函数中一个局部变量
int
b;
系统自动在栈中为b开辟空间
heap:
需要程序员自己申请,并指明大小,在c中malloc函数
...
回复

使用道具 举报

千问 | 2008-12-22 00:08:14 | 显示全部楼层
堆是数组,内存大小不能改变,栈内存可以动态的改变...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行