堆,堆栈,常量池

(1)数据结构

  1. 栈:实际上就是满足后进先出的性质,是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除。

  2. 堆:堆是一种完全二叉树或者近似完全二叉树

(2)位置分布

在这里插入图片描述

(3)存储内容

堆栈:
1.基本类型变量的数据
2.对象的引用

堆:
对象
图例
常量池
存放字符串常量和基本类型常量
在这里插入图片描述

(4)优势

栈的优势: 存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。

堆的优势: 可以动态地分配内存大小,所有使用new 构造出来的对象都在堆中存储,生存期也不必事先告诉编译器,
缺点:由于要在运行时动态分配内存,存取速度较慢。

**常量池:**避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。

延伸:基本数据类型的值,到底存放在哪?

这取决于它声明在哪,它只会声明在三个位置

类变量:随着类加载的初始化,把值存放在堆中,该类所有对象共用
成员变量:随着对象的创建,也是把值存放在堆中,每个对象私有
局部变量:运行时,随着方法的入栈,而创建在栈中,随着方法的出栈而消亡

对于成员变量和局部变量
成员变量就是方法外部,类的内部定义的变量;局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。
形式参数是局部变量,局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。
成员变量存储在堆中的对象里面,由垃圾回收器负责回收。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值