Thinking in Java Study(04)

初始化与清除 

1. 以构造器确保初始化

java利用构造器进行初始化,编译器会自动调用构造器方法,构造器是和类同名的方法。

java会给没有构造器的类提供一个默认的构造器,构造器不带参数名称与类名相同。

构造器可以重载,可以带参数。

2. 方法的重载

区分重载方法的方法,参数的数量和类型不同,参数的顺序也可以区分但不推荐。

涉及基本类型的方法重载,需要注意向上转型和向下转型。

3. 清除(终结和垃圾回收)

对象不可能不被回收

垃圾回收不等于析构 finalize()方法不同于C++的析构方法

垃圾回收只与内存有关

finalize()在垃圾回收时被调用,可以把垃圾回收之前应该做的事写到这个方法中,但finalize()不一定会被调用,垃圾回收只有在内存被耗尽时才会进行。

4. 垃圾回收如何工作

停止-复制

先暂停程序的运行,然后将所有存活的对象从当前堆复制到另一个堆,没有被复制的全部都是垃圾。当对象被复制到新堆时,它们是一个挨着一个的,新堆保持紧凑排列。引用被修正,会降低效率。

标记-清扫

依据的思路是从堆栈和静态存储区出发,遍历所有引用,进而找到所有存活的对象。每当找到一个存活对象,就给对象设一个标记,这个过程不会回收任何对象。只有全部标记工作完成之后清除才开始。没有被标记的对象被释放。所剩下的空间是不连续的。

“自适应、分代的、停止-复制、标记-清扫”,Just-In-Time,可以把程序全部或部分编译成机器码,惰性编译,用时才编译。

5. 初始化

初始化的顺序,先静态后非静态,先属性后构造器

6. 数组

数组初始化可以不固定数组长度,根据需要分配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值