【学习笔记】 唐大仕—Java程序设计 第5讲 深入理解Java语言之5.4 对象清除与垃圾回收

/**
* 对象清除与垃圾回收
* @author cnRicky
* @date 2018.11.10
*/

对象清除与垃圾回收

对象清除
  • 我们知道:new创建对象
  • 那么如何销毁对象?
  • Java中是自动清除
    • 不需要使用delete等方法人为销毁它
对象的自动清除
  • 垃圾回收(garbage collection)

  • 对象回收是由Java虚拟机的垃圾回收线程来完成的

  • 为什么系统知道对象是否为垃圾?

    • 任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收
System.gc()方法
  • System.gc()方法
  • 它是System类的static方法
  • 它可以要求系统进行垃圾回收
  • 但它仅仅只是“建议(suggest)”
finalize()方法
  • Java中没有“析构方法(destructor)”

  • 但Object的finalize()有类似功能

    • 系统在回收时会自动调用对象的finalize()方法
    • protected void finalize() throws Throwable{}
  • 子类的finalize()方法

    • 可以在子类的finalize()方法释放系统资源
    • 一般来说,子类的finalize()方法中应该调用父类的finalize()方法,以保证父类的清理工作能够正常进行
try-with-resources
  • 由于finalize()方法的调用时机并不确定,所以一般不用finalize()
  • 关闭打开文件、清除一些非内存资源等工作需要进行处理
  • 可以使用try-with-resources语句(JDK1.7 以上)
  • 对于实现了java.lang.AutoCloseable的对象
  • try( Scanner in = new Scanner( ... ) ){ ...... }
  • 会自动调用其close()方法,相当于
  • finally{ in.close(); }
posted @ 2018-11-10 17:49  cnRicky  阅读(362)  评论(0编辑  收藏  举报