java编程思想(三)总结

第四章 初始化与清理
4.1 构造器
例:Class Apple{
Apple(){
}
}
new Apple();首先申请堆中内存空间,调用构造器进行初始化

4.2 方法重载
相同函数名,不同参数类型或者个数的方法互为重载函数
对于构造器,若自定义了带参数的构造器则会覆盖缺省构造器,因此缺省构造器任然需要定义
this只能在类方法里面使用,表示调用对象的引用
构造器中调用构造器this()
编译器禁止其他任何地方调用构造器,static方法内不能调用this(),java禁止全局方法,但类中植入static(可以访问static方法和字段)

4.3  清理:终结处理和垃圾回收
finalize()一旦垃圾回收器准备好释。放对象占用的存储空间,将首先调用此方法,并且在下次垃圾回收动作发生时,才会真正的回收对象占用的内存
java垃圾回收器基于引用计数的原理,即每个对象有个引用计数器,当有引用连接到对象时,引用计数+1,当引用离开作用域或者被置为null时,引用计数-1,在整个生命周期中,垃圾回收器会在含有对象的列表遍历,当发现某个对象的引用计数为0时,则释放其占用的空间,不过会出现交互自引用现象即对象之间存在循环引用,可能出现对象应该回收,但引用计数不为0
新的模式:对于活的对象,一定能追溯到其存活在堆栈或者静态存储区之中的引用,引用链条可能会穿过数个对象层次,由此从堆栈和静态存储区出发,遍历全部引用,就能找到所有活的对象。发现引用,找到对象,发现此对象的所有引用,直到根源于堆栈和静态存储区的引用全部被访问为止。
jvm采用自适应的垃圾回收技术,其中一种“停止-复制”,先停止程序的运行,然后将所有存活的对象从一个堆复制到另外一个堆,没有被复制的全部是垃圾,被复制到新堆时,它们是一个挨着一个,最后可以按照前述办法简单直接的分配新空间。若没有新垃圾产生则会转入“标记-清扫”方式从堆栈和静态存储区出发,遍历所有引用,找到全部存活对象,每当找到一个存活对象,就给对象标记,当全部标记完后,清理没被标记的对象被释放
jvm中有许多附加技术提升速度比如加载器‘’即时编译器”,可以把全部或者部分翻译成本地机器码,当要装载一个类时,编译器会找到其.class文件,然后将其字节码装入内存
惰性评估:即时编译器旨在必要的时候才编译代码,从不会被执行的代码则不会被JIT编译。

4.4 成员初始化
初始化顺序:先静态对象后非静态对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值