【Java面试题】47 heap和stack有什么区别
2024-08-22 17:47:56
java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
1.heap是堆,stack是栈。
2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。
3.stack空间有限,heap的空间是很大的自由区。
在Java中,
若只是声明一个对象,则先在栈内存中为其分配地址空间,
若再new一下,实例化它,则在堆内存中为其分配地址。
4.举例:
数据类型 变量名;这样定义的东西在栈区。
如:Object a =null; 只在栈内存中分配空间
new 数据类型();或者malloc(长度); 这样定义的东西就在堆区
如:Object b =new Object(); 则在堆内存中分配空间
参考资料:http://www.cnblogs.com/perfy/archive/2012/09/06/2672946.html
最新文章
- Android 手机卫士--设置界面&;功能列表界面跳转逻辑处理
- ReSharper 配置及用法
- Openstack的计算节点的nova-network异常中止及实例无法删除排错过程
- android布局 及 布局属性
- UVa 1586 Molar mass
- 配置文件的读取添加webconfig
- 安装STS报错(一)
- 【转】Swagger2 添加HTTP head参数
- Hibernate与mysql的对应类型
- WebRTC 音频算法 附完整C代码
- Yii2设计模式——简单工厂模式
- C# 仿360悬浮球开发demo程序
- bootstrap 前端模板
- BZOJ 1257: [CQOI2007]余数之和
- 软工网络15Alpha阶段敏捷冲刺博客集合
- hdu1799-循环多少次?-(组合恒等式)
- G - Christmas Play
- php递归获取分类结构
- BUAA软工个人作业Week2-代码复审
- taglist-plus 安装使用