Java初始化与清理

初始化

Java尽力保证:所有变量在使用前都能得到恰当的初始化。对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。

基本类型默认初值都为0,char也为0,但是'\u0000'为空格控制打印为空。

Java类的初始化顺序:

https://www.cnblogs.com/fly-piglet/p/8766226.html


清理

C++中,对象一定会被销毁(如果程序中没有缺陷的话),java里的对象并非总是被垃圾回收。

  1. 对象可能不被垃圾回收。
  2. 垃圾回收并不等于析构。

finalize():与C++的析构函数不同java不保证执行时间跟是否必定执行。此方法用于一种特殊情况,即分配内存时可能采用了类似C语言中的做法,而非Java中的通常做法。这种情况主要发生在使用“本地方法”的情况下,例如使用了C的malloc()函数来分配内存,就需要在finalize()中调用C的free()函数来释放内存。否则,Java垃圾回收是不会是释放C语言分配的内存空间的。

finalize()函数的大概流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。finalize()只会执行一次。

https://www.cnblogs.com/Smina/p/7189427.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值