zoukankan      html  css  js  c++  java
  • 【学习笔记】 唐大仕—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(); }
  • 相关阅读:
    [py]函数小结
    [py]class的特殊方法
    [py]数据描述符优先级
    [py]python中__new__作用
    [py]django重置密码
    [py]多态的理解
    [py]类属性和实例属性
    【转】比较详细的Asp伪静态化方法及Asp静态化探讨
    VB6 XArrayDB | Xarray ReDim 用法
    vb6 使用msxml2.serverxmlhttp 请求HTTP
  • 原文地址:https://www.cnblogs.com/dreamcoding/p/9940088.html
Copyright © 2011-2022 走看看