thinking in java(III)--initialization and cleanup

今天看了第四章

Initialization and Clean up


构造函数是自然而又有效的一个设定

构造函数被调用前,对象的自动初始化动作不受程序员控制,但是调用后对象会处于你所希望的状态

关于构造函数的argument list

能够进行宽化转型,但是窄化转型需要明确的标识,具体参见书中冗长的例子。。。



记忆清除,这是和C++迥异的地方

三句话,大体描述了整个机制

1.垃圾回收不等于析构

2.对象可能不会被回收

3.垃圾回收只回收内存

            

垃圾回收的流程是这样子

在heap内存即将枯竭时,垃圾回收器自动启动

当确定该对象空间可被释放时,即该对象未被执行部分引用,首先调用该对象finalize(),然后回收该段内存


举个例子说,一个对象绘制了一个圆,满足清除该对象空间的条件时,开始垃圾回收流程

对象被释放了,但是圆依然存在,这可以视为一个BUG

实际上,需要自己编写一个方法来将这个圆抹去,完成除释放空间之外的所有善后工作


因此,finalize的功能略显尴尬,它判断对象是否达到了死亡条件,空间可否被释放

必要的话,你也可以加一些输出语句来观察内存回收情况


可以这么说,垃圾回收器干且只干回收垃圾这一码事,而不负责清理垃圾所造成的污染

而且要到内存有空了才主动出来收拾,

因此程序运行完后大有可能你的对象依然存在

毕竟调用一次垃圾回收动作开销还是很大的,一点点垃圾就让它暂时留着吧





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值