第四章 初始化和清理

一、构造方法

  1、默认构造方法

二、方法重载(的方式)

  1、利用参数的顺序

  2、利用参数的数据类型

  3、利用参数的数量

  4、利用不同的返回类型(方法型别)

三、关键字this

  1、在构造方法中调用构造方法

  • 构造函数的调用动作必须置于最起始处  Constructor call must be the first statement in a constructor
  • 所以每个构造函数内部只能调用一个其他构造函数

四、清理:终结与垃圾回收

五、成员初始化

六、总结

    这一章主要讲了初始化和垃圾清理,本书对初始化的描述都是比较基础的知识,相对比较熟悉;而垃圾清理是由"垃圾回收器"自动执行的,相对比较陌生。

    "垃圾回收器"的确给程序员们们带来了极大的便利,功能也是相当的强大。它的运作方式也有多种,如:引用计数(reference counting,一种单纯、速度很慢的GC技术;计数,即是该对象被引用的次数,当计数器为0时便释放其所占用的内存)。然而为了更快的速度,它的真正原理是根据"存活于stack(栈)或static storage(静态存储空间)上"的reference而追踪到的对象,才算是尚存的对象,不被找到的对象便自然而然的变成了垃圾,这种方式下,JVM采用"自省式(adaptive)"垃圾回收机制。至于如何处处理存活对象,有"copy collectors"、"mark and sweep"、"stop-and-copy"等。不同的jdk版本会有不同的垃圾回收机制,然而本书是为Java 2而写的,如今的Java 8或许有更快、更好、更安全的"垃圾回收器"(今后有空继续研究),但不管怎样,对"垃圾回收器"还是有了一个浅显的认识。

    纵使"垃圾回收器很强大",但还是有缺点。"垃圾回收器"只知道释放那些经由new分配得来的内存,因此它不知道如何释放你这个对象所占用的"特殊内存"(对象以"对象生成"之外的方式分配了某种存储空间),这时你就需要用到finalize()函数,它能让你在"垃圾回收时刻"执行某些重要的(你自己的)清理动作。然而finalize函数(或许还有其他的一些相关函数)具体如何使用,又在何时使用,本人并没有实际操作过。

    总之,对于"垃圾回收器"算是有了一个很模糊的认识。以后有机会继续深入学习一下。

posted @ 2016-07-10 17:54  DeadGhost  阅读(119)  评论(0编辑  收藏  举报