对象存储

java 有自己的垃圾回收机制,于是很多对象,我们使用之后就不去管了(不用像C++那样来个析构函数~)。在理解垃圾回收之前,先要考虑java语言程序存储的位置。 计算机的存储介质里,读取速度最快的应该是寄存器了。这是计算机的最宝贵的存储资源,而且也最稀缺,想要程序运行的快肯定希望能分配寄存器空间,但是对于java程序员来说,这不可能! 寄存器的确在我们的程序运行中被分配了空间,但是这不是我们能控制的。据说(不清楚,未验证)C++是可以通过编译器来分配寄存器空间的。 下面就是能控制的存储空间了: 堆栈,仅次于寄存器的高速存储空间,通过指针的移动来完成空间的分配和释放。这样可以通过移动指针来完成存储空间的回收,所以可以进行控制。java中的引用(相对于对象实例,理解上就相当于名字吧,尤其在面向对象编程里,对象是一个实例,引用就相当于实例的名字,当然一个对象可以多个名字)就被放置在这里,一般引用的生命周期就是}之前,也就是说当执行到},堆栈就可以对这个引用占用的空间进行释放了。另外,java语言里还有一种类型——基本类型,因为它们生成的时候是直接赋值,比如int i = 2;后面的2没有使用new来生成对象,那i就是直接拥有的2的值,这些变量因为其简单,占用空间小,也被放置在了堆栈中。但是,必须明确它们占用的空间上限,也就是经常提到的java中基本类型在内存中占有多少个字节。比如:byte占用1个字节或者说8个bit,int占用2个字节16个bit。boolean虽然没有明确指定占用几个字节,但是它只能被赋予true或false的值,应该也是很小。 堆,这是所有java对象的存储空间。也是垃圾回收重点要处理的区域。因为对象new出来之后,编译器是没办法确定它应该什么时候被kill掉的。所有只能是根据某些算法或者约定来进行空间释放。 剩余的就是常量和程序了。存储在硬盘或者某些持久化对象里了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值