• 垃圾回收,对象在内存状态


    垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(如数据库连接,网络IO等资源)

    程序无法精准控制垃圾回收的运行,垃圾回收会在任何时候进行,当对象永久的失去引用后,系统会在合适的时候回收它的内存

    在垃圾回收机制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使对象重新复活,导致垃圾回收机制取消回收

    对象在内存中的状态:(根据被引用的状态)

    可达状态:一个以上的引用变量引用它

    可恢复状态:不再有任何引用变量引用它,垃圾回收机制准备回收它,回收前调用finalize()方法,复活则可达,否则进入不可达

    不可达状态:对象与所有引用变量联系切断,finalize后也没变可达,则这个对象永久的失去引用,变成不可达,系统真正回收该对象所占有的资源

    强制垃圾回收:(通知系统进行回收,具体不确定)

    调用System类的gc()静态方法:System.gc()

    调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc()

    finalize方法:

    永远不要主动调用finalize方法,留给垃圾回收机制调用

    finalize方法是否调用具有不确定性,不能当成一定调用

    JVM执行finalize方法出现异常时,垃圾回收机制不报告异常,程序继承执行

      

  • 相关阅读:
    python向mysql中插入数字、字符串、日期总结
    selenium鼠标事件
    iOS hook
    网络抓包篇
    frida IOS环境搭建
    git
    $emit
    better-scroll无法滚动的问题。
    this.$nextTick()作用
    better-scroll
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6925896.html
Copyright © 2020-2023  润新知